* [RFC] MAINTAINERS: add status information @ 2023-07-16 21:25 Stephen Hemminger 2023-07-19 16:07 ` [PATCH v2] " Stephen Hemminger ` (7 more replies) 0 siblings, 8 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-16 21:25 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger, Thomas Monjalon Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- MAINTAINERS | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 266 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 5bb8090ebe7e..d523ea34d4f3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17,6 +17,16 @@ Descriptions of section entries: X: Files and directories exclusion, same rules as F: K: Keyword regex pattern to match content. One regex pattern per line. Multiple K: lines acceptable. + S: *Status*, one of the following: + Supported: Someone is actually paid to look after this. + Maintained: Someone actually looks after it. + Odd Fixes: It has a maintainer but they don't have time to do + much other than throw the odd patch in. See below.. + Orphan: No current maintainer [but maybe you could take the + role as you write your new code]. + Obsolete: Old code. Something tagged obsolete generally means + it has been replaced by a better system and you + should be using that. General Project Administration @@ -25,44 +35,54 @@ General Project Administration Main Branch M: Thomas Monjalon <thomas@monjalon.net> M: David Marchand <david.marchand@redhat.com> +S: Supported T: git://dpdk.org/dpdk Next-net Tree M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net Next-net-brcm Tree M: Ajit Khaparde <ajit.khaparde@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm Next-net-intel Tree M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel Next-net-mrvl Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl Next-net-mlx Tree M: Raslan Darawsheh <rasland@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx Next-virtio Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio Next-crypto Tree M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto Next-eventdev Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Next-baseband Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband Stable Branches @@ -70,17 +90,21 @@ M: Luca Boccassi <bluca@debian.org> M: Kevin Traynor <ktraynor@redhat.com> M: Christian Ehrhardt <christian.ehrhardt@canonical.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported T: git://dpdk.org/dpdk-stable Security Issues M: maintainers@dpdk.org +S: Supported Documentation (with overlaps) F: README F: doc/ +S: Supported Developers and Maintainers Tools M: Thomas Monjalon <thomas@monjalon.net> +S: Supported F: MAINTAINERS F: devtools/build-dict.sh F: devtools/check-abi.sh @@ -110,7 +134,7 @@ F: .mailmap Build System M: Bruce Richardson <bruce.richardson@intel.com> -F: Makefile +S: Maintained F: meson.build F: meson_options.txt F: config/ @@ -130,11 +154,13 @@ F: devtools/check-meson.py Public CI M: Aaron Conole <aconole@redhat.com> M: Michael Santana <maicolgabriel@hotmail.com> +S: Supported F: .github/workflows/build.yml F: .ci/ Driver information M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Maintained F: buildtools/coff.py F: buildtools/gen-pmdinfo-cfile.py F: buildtools/pmdinfogen.py @@ -147,6 +173,7 @@ Environment Abstraction Layer T: git://dpdk.org/dpdk EAL API and common code +S: Supported F: lib/eal/common/ F: lib/eal/unix/ F: lib/eal/include/ @@ -180,6 +207,7 @@ F: app/test/test_version.c Trace - EXPERIMENTAL M: Jerin Jacob <jerinj@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> +S: Supported F: lib/eal/include/rte_trace*.h F: lib/eal/common/eal_common_trace*.c F: lib/eal/common/eal_trace.h @@ -188,6 +216,7 @@ F: app/test/test_trace* Memory Allocation M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/include/rte_fbarray.h F: lib/eal/include/rte_mem* F: lib/eal/include/rte_malloc.h @@ -209,11 +238,13 @@ F: app/test/test_memzone.c Interrupt Subsystem M: Harman Kalra <hkalra@marvell.com> +S: Supported F: lib/eal/include/rte_epoll.h F: lib/eal/*/*interrupts.* F: app/test/test_interrupts.c Keep alive +S: Orphan F: lib/eal/include/rte_keepalive.h F: lib/eal/common/rte_keepalive.c F: examples/l2fwd-keepalive/ @@ -221,6 +252,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst Secondary process M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Maintained K: RTE_PROC_ F: lib/eal/common/eal_common_proc.c F: doc/guides/prog_guide/multi_proc_support.rst @@ -230,6 +262,7 @@ F: doc/guides/sample_app_ug/multi_process.rst Service Cores M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: lib/eal/include/rte_service.h F: lib/eal/include/rte_service_component.h F: lib/eal/common/rte_service.c @@ -240,44 +273,52 @@ F: doc/guides/sample_app_ug/service_cores.rst Bitops M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_bitops.h F: app/test/test_bitops.c Bitmap M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/eal/include/rte_bitmap.h F: app/test/test_bitmap.c MCSlock M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/eal/include/rte_mcslock.h F: app/test/test_mcslock.c Sequence Lock M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_seqcount.h F: lib/eal/include/rte_seqlock.h F: app/test/test_seqlock.c Ticketlock M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_ticketlock.h F: app/test/test_ticketlock.c Pseudo-random Number Generation M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_random.h F: lib/eal/common/rte_random.c F: app/test/test_rand_perf.c ARM v7 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: lib/eal/arm/ X: lib/eal/arm/include/*_64.h ARM v8 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst F: lib/eal/arm/ @@ -291,12 +332,14 @@ F: examples/common/neon/ LoongArch M: Min Zhou <zhoumin@loongson.cn> +S: Supported F: config/loongarch/ F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst F: lib/eal/loongarch/ IBM POWER (alpha) M: David Christensen <drc@linux.vnet.ibm.com> +S: Supported F: config/ppc/ F: lib/eal/ppc/ F: lib/*/*_altivec* @@ -307,6 +350,7 @@ F: examples/common/altivec/ RISC-V M: Stanislaw Kardach <kda@semihalf.com> +S: Supported F: config/riscv/ F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst F: lib/eal/riscv/ @@ -314,6 +358,7 @@ F: lib/eal/riscv/ Intel x86 M: Bruce Richardson <bruce.richardson@intel.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: config/x86/ F: doc/guides/linux_gsg/nic_perf_intel_platform.rst F: buildtools/binutils-avx512-check.py @@ -330,28 +375,34 @@ F: examples/*/*_avx* F: examples/common/sse/ Linux EAL (with overlaps) +S: Maintained F: lib/eal/linux/ F: doc/guides/linux_gsg/ Linux UIO +S: Maintained F: drivers/bus/pci/linux/*uio* Linux VFIO M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/linux/*vfio* F: drivers/bus/pci/linux/*vfio* FreeBSD EAL (with overlaps) M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: lib/eal/freebsd/ F: doc/guides/freebsd_gsg/ FreeBSD contigmem M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: kernel/freebsd/contigmem/ FreeBSD UIO M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: kernel/freebsd/nic_uio/ Windows support @@ -359,12 +410,14 @@ M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> M: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com> M: Dmitry Malloy <dmitrym@microsoft.com> M: Pallavi Kadam <pallavi.kadam@intel.com> +S: Supported F: lib/eal/windows/ F: buildtools/map_to_win.py F: doc/guides/windows_gsg/ Windows memory allocation M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Supported F: lib/eal/windows/eal_hugepages.c F: lib/eal/windows/eal_mem* @@ -372,10 +425,12 @@ F: lib/eal/windows/eal_mem* Core Libraries -------------- T: git://dpdk.org/dpdk +S: Maintained Memory pool M: Olivier Matz <olivier.matz@6wind.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: lib/mempool/ F: drivers/mempool/ring/ F: doc/guides/prog_guide/mempool_lib.rst @@ -385,6 +440,7 @@ F: app/test/test_func_reentrancy.c Ring queue M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ring/ F: doc/guides/prog_guide/ring_lib.rst F: app/test/test_ring* @@ -392,6 +448,7 @@ F: app/test/test_func_reentrancy.c Stack M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/stack/ F: drivers/mempool/stack/ F: app/test/test_stack* @@ -399,6 +456,7 @@ F: doc/guides/prog_guide/stack_lib.rst Packet buffer M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/mbuf/ F: doc/guides/prog_guide/mbuf_lib.rst F: app/test/test_mbuf.c @@ -407,6 +465,7 @@ Ethernet API M: Thomas Monjalon <thomas@monjalon.net> M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/ F: app/test/test_ethdev* @@ -415,6 +474,7 @@ F: doc/guides/prog_guide/switch_representation.rst Flow API M: Ori Kam <orika@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/cmdline_flow.c F: doc/guides/prog_guide/rte_flow.rst @@ -422,18 +482,21 @@ F: lib/ethdev/rte_flow* Traffic Management API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_tm* F: app/test-pmd/cmdline_tm.* Traffic Metering and Policing API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_mtr* F: app/test-pmd/cmdline_mtr.* Baseband API M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: lib/bbdev/ F: doc/guides/prog_guide/bbdev.rst @@ -446,6 +509,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst Crypto API M: Akhil Goyal <gakhil@marvell.com> M: Fan Zhang <fanzhang.oss@gmail.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/cryptodev/ F: app/test/test_cryptodev* @@ -453,6 +517,7 @@ F: examples/l2fwd-crypto/ Security API M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/security/ F: doc/guides/prog_guide/rte_security.rst @@ -461,6 +526,7 @@ F: app/test/test_security* Compression API - EXPERIMENTAL M: Fan Zhang <fanzhang.oss@gmail.com> M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/compressdev/ F: drivers/compress/ @@ -470,6 +536,7 @@ F: doc/guides/compressdevs/features/default.ini RegEx API - EXPERIMENTAL M: Ori Kam <orika@nvidia.com> +S: Supported F: lib/regexdev/ F: app/test-regex/ F: doc/guides/prog_guide/regexdev.rst @@ -477,6 +544,7 @@ F: doc/guides/regexdevs/features/default.ini Machine Learning device API - EXPERIMENTAL M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: lib/mldev/ F: doc/guides/prog_guide/mldev.rst F: app/test-mldev/ @@ -484,6 +552,7 @@ F: doc/guides/tools/testmldev.rst DMA device API - EXPERIMENTAL M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: lib/dmadev/ F: drivers/dma/skeleton/ F: app/test/test_dmadev* @@ -495,6 +564,7 @@ F: doc/guides/sample_app_ug/dma.rst General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: lib/gpudev/ F: doc/guides/prog_guide/gpudev.rst F: doc/guides/gpus/features/default.ini @@ -502,6 +572,7 @@ F: app/test-gpudev/ Eventdev API M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/ F: drivers/event/skeleton/ @@ -510,6 +581,7 @@ F: examples/l3fwd/l3fwd_event* Eventdev Ethdev Rx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_rx_adapter* F: app/test/test_event_eth_rx_adapter.c @@ -517,6 +589,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst Eventdev Ethdev Tx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_tx_adapter* F: app/test/test_event_eth_tx_adapter.c @@ -524,6 +597,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst Eventdev Timer Adapter API M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*timer_adapter* F: app/test/test_event_timer_adapter.c @@ -531,6 +605,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst Eventdev Crypto Adapter API M: Abhinandan Gujjar <abhinandan.gujjar@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*crypto_adapter* F: app/test/test_event_crypto_adapter.c @@ -539,6 +614,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst Raw device API M: Sachin Saxena <sachin.saxena@oss.nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: lib/rawdev/ F: drivers/raw/skeleton/ F: app/test/test_rawdev.c @@ -551,11 +627,13 @@ Memory Pool Drivers Bucket memory pool M: Artem V. Andreev <artem.andreev@oktetlabs.ru> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/mempool/bucket/ Marvell cnxk M: Ashwin Sekhar T K <asekhar@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/mempool/cnxk/ F: doc/guides/mempool/cnxk.rst @@ -567,20 +645,24 @@ Bus Drivers AMD CDX bus M: Nipun Gupta <nipun.gupta@amd.com> M: Nikhil Agarwal <nikhil.agarwal@amd.com> +S: Supported F: drivers/bus/cdx/ Auxiliary bus driver - EXPERIMENTAL M: Parav Pandit <parav@nvidia.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported F: drivers/bus/auxiliary/ Intel FPGA bus M: Rosen Xu <rosen.xu@intel.com> +S: Supported F: drivers/bus/ifpga/ NXP buses M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/common/dpaax/ F: drivers/bus/dpaa/ F: drivers/bus/fslmc/ @@ -588,36 +670,43 @@ F: drivers/bus/fslmc/ PCI bus driver M: Chenbo Xia <chenbo.xia@intel.com> M: Nipun Gupta <nipun.gupta@amd.com> +S: Supported F: drivers/bus/pci/ Platform bus driver M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: drivers/bus/platform/ VDEV bus driver +S: Maintained F: drivers/bus/vdev/ F: app/test/test_vdev.c VMBUS bus driver M: Long Li <longli@microsoft.com> +S: Supported F: drivers/bus/vmbus/ Networking Drivers ------------------ M: Ferruh Yigit <ferruh.yigit@amd.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: doc/guides/nics/features/default.ini Link bonding M: Chas Williams <chas3@att.com> M: Min Hu (Connor) <humin29@huawei.com> +S: Supported F: drivers/net/bonding/ F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst F: app/test/test_link_bonding* F: examples/bond/ Linux KNI +S: Obsolete F: kernel/linux/kni/ F: lib/kni/ F: doc/guides/prog_guide/kernel_nic_interface.rst @@ -625,12 +714,14 @@ F: app/test/test_kni.c Linux AF_PACKET M: John W. Linville <linville@tuxdriver.com> +S: Odd Fixes F: drivers/net/af_packet/ F: doc/guides/nics/features/afpacket.ini Linux AF_XDP M: Ciara Loftus <ciara.loftus@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported F: drivers/net/af_xdp/ F: doc/guides/nics/af_xdp.rst F: doc/guides/nics/features/af_xdp.ini @@ -641,24 +732,28 @@ M: Shai Brandes <shaibran@amazon.com> M: Evgeny Schemeilin <evgenys@amazon.com> M: Igor Chauskin <igorch@amazon.com> M: Ron Beider <rbeider@amazon.com> +S: Supported F: drivers/net/ena/ F: doc/guides/nics/ena.rst F: doc/guides/nics/features/ena.ini AMD axgbe M: Chandubabu Namburu <chandu@amd.com> +S: Supported F: drivers/net/axgbe/ F: doc/guides/nics/axgbe.rst F: doc/guides/nics/features/axgbe.ini AMD Pensando ionic M: Andrew Boyer <andrew.boyer@amd.com> +S: Supported F: drivers/net/ionic/ F: doc/guides/nics/ionic.rst F: doc/guides/nics/features/ionic.ini Marvell/Aquantia atlantic M: Igor Russkikh <irusskikh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/atlantic/ F: doc/guides/nics/atlantic.rst @@ -668,6 +763,7 @@ Atomic Rules ARK M: Shepard Siegel <shepard.siegel@atomicrules.com> M: Ed Czeck <ed.czeck@atomicrules.com> M: John Miller <john.miller@atomicrules.com> +S: Supported F: drivers/net/ark/ F: doc/guides/nics/ark.rst F: doc/guides/nics/features/ark.ini @@ -675,6 +771,7 @@ F: doc/guides/nics/features/ark.ini Broadcom bnxt M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Somnath Kotur <somnath.kotur@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm F: drivers/net/bnxt/ F: doc/guides/nics/bnxt.rst @@ -683,6 +780,7 @@ F: doc/guides/nics/features/bnxt.ini Cavium ThunderX nicvf M: Jerin Jacob <jerinj@marvell.com> M: Maciej Czekaj <mczekaj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/thunderx/ F: doc/guides/nics/thunderx.rst @@ -690,6 +788,7 @@ F: doc/guides/nics/features/thunderx.ini Cavium OCTEON TX M: Harman Kalra <hkalra@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/octeontx/ F: drivers/mempool/octeontx/ @@ -699,6 +798,7 @@ F: doc/guides/nics/features/octeontx.ini Chelsio cxgbe M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com> +S: Supported F: drivers/net/cxgbe/ F: doc/guides/nics/cxgbe.rst F: doc/guides/nics/features/cxgbe.ini @@ -706,6 +806,7 @@ F: doc/guides/nics/features/cxgbe.ini Cisco enic M: John Daley <johndale@cisco.com> M: Hyong Youb Kim <hyonkim@cisco.com> +S: Supported F: drivers/net/enic/ F: doc/guides/nics/enic.rst F: doc/guides/nics/features/enic.ini @@ -715,6 +816,7 @@ M: Junfeng Guo <junfeng.guo@intel.com> M: Jeroen de Borst <jeroendb@google.com> M: Rushil Gupta <rushilg@google.com> M: Joshua Washington <joshwash@google.com> +S: Supported F: drivers/net/gve/ F: doc/guides/nics/gve.rst F: doc/guides/nics/features/gve.ini @@ -722,6 +824,7 @@ F: doc/guides/nics/features/gve.ini Hisilicon hns3 M: Dongdong Liu <liudongdong3@huawei.com> M: Yisen Zhuang <yisen.zhuang@huawei.com> +S: Supported F: drivers/net/hns3/ F: doc/guides/nics/hns3.rst F: doc/guides/nics/features/hns3.ini @@ -730,6 +833,7 @@ Huawei hinic M: Ziyang Xuan <xuanziyang2@huawei.com> M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com> M: Guoyang Zhou <zhouguoyang@huawei.com> +S: Supported F: drivers/net/hinic/ F: doc/guides/nics/hinic.rst F: doc/guides/nics/features/hinic.ini @@ -737,6 +841,7 @@ F: doc/guides/nics/features/hinic.ini Intel e1000 M: Simei Su <simei.su@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/e1000/ F: doc/guides/nics/e1000em.rst @@ -747,6 +852,7 @@ F: doc/guides/nics/features/igb*.ini Intel ixgbe M: Qiming Yang <qiming.yang@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ixgbe/ F: doc/guides/nics/ixgbe.rst @@ -756,6 +862,7 @@ F: doc/guides/nics/features/ixgbe*.ini Intel i40e M: Yuying Zhang <Yuying.Zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/i40e/ F: doc/guides/nics/i40e.rst @@ -765,6 +872,7 @@ F: doc/guides/nics/features/i40e*.ini Intel fm10k M: Qi Zhang <qi.z.zhang@intel.com> M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/fm10k/ F: doc/guides/nics/fm10k.rst @@ -773,6 +881,7 @@ F: doc/guides/nics/features/fm10k*.ini Intel iavf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/iavf/ F: drivers/common/iavf/ @@ -781,6 +890,7 @@ F: doc/guides/nics/features/iavf*.ini Intel ice M: Qiming Yang <qiming.yang@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ice/ F: doc/guides/nics/ice.rst @@ -789,6 +899,7 @@ F: doc/guides/nics/features/ice.ini Intel idpf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/idpf/ F: drivers/common/idpf/ @@ -798,6 +909,7 @@ F: doc/guides/nics/features/idpf.ini Intel cpfl - EXPERIMENTAL M: Yuying Zhang <yuying.zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/cpfl/ F: doc/guides/nics/cpfl.rst @@ -806,6 +918,7 @@ F: doc/guides/nics/features/cpfl.ini Intel igc M: Junfeng Guo <junfeng.guo@intel.com> M: Simei Su <simei.su@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/igc/ F: doc/guides/nics/igc.rst @@ -814,6 +927,7 @@ F: doc/guides/nics/features/igc.ini Intel ipn3ke M: Rosen Xu <rosen.xu@intel.com> T: git://dpdk.org/next/dpdk-next-net-intel +S: Supported F: drivers/net/ipn3ke/ F: doc/guides/nics/ipn3ke.rst F: doc/guides/nics/features/ipn3ke.ini @@ -823,6 +937,7 @@ M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> M: Satha Rao <skoteshwar@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/cnxk/ F: drivers/net/cnxk/ @@ -832,6 +947,7 @@ F: doc/guides/platform/cnxk.rst Marvell mvpp2 M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/mvep/ F: drivers/net/mvpp2/ @@ -841,6 +957,7 @@ F: doc/guides/nics/features/mvpp2.ini Marvell mvneta M: Zyta Szpak <zr@semihalf.com> M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/mvneta/ F: doc/guides/nics/mvneta.rst @@ -848,6 +965,7 @@ F: doc/guides/nics/features/mvneta.ini Marvell OCTEON TX EP - endpoint M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/octeon_ep/ F: doc/guides/nics/features/octeon_ep.ini @@ -856,6 +974,7 @@ F: doc/guides/nics/octeon_ep.rst NVIDIA mlx4 M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/net/mlx4/ F: doc/guides/nics/mlx4.rst @@ -866,6 +985,7 @@ M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> M: Ori Kam <orika@nvidia.com> M: Suanming Mou <suanmingm@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/common/mlx5/ F: drivers/net/mlx5/ @@ -875,23 +995,27 @@ F: doc/guides/nics/features/mlx5.ini Microsoft mana M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/mana/ F: doc/guides/nics/mana.rst F: doc/guides/nics/features/mana.ini Microsoft vdev_netvsc - EXPERIMENTAL M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/net/vdev_netvsc/ F: doc/guides/nics/vdev_netvsc.rst Microsoft Hyper-V netvsc M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/netvsc/ F: doc/guides/nics/netvsc.rst F: doc/guides/nics/features/netvsc.ini Netcope nfb M: Martin Spinler <spinler@cesnet.cz> +S: Supported F: drivers/net/nfb/ F: doc/guides/nics/nfb.rst F: doc/guides/nics/features/nfb.ini @@ -899,6 +1023,7 @@ F: doc/guides/nics/features/nfb.ini Netronome nfp M: Chaoyong He <chaoyong.he@corigine.com> M: Niklas Soderlund <niklas.soderlund@corigine.com> +S: Supported F: drivers/net/nfp/ F: doc/guides/nics/nfp.rst F: doc/guides/nics/features/nfp*.ini @@ -906,6 +1031,7 @@ F: doc/guides/nics/features/nfp*.ini NXP dpaa M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa/ F: drivers/net/dpaa/ F: doc/guides/nics/dpaa.rst @@ -914,6 +1040,7 @@ F: doc/guides/nics/features/dpaa.ini NXP dpaa2 M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa2/ F: drivers/net/dpaa2/ F: doc/guides/nics/dpaa2.rst @@ -922,6 +1049,7 @@ F: doc/guides/nics/features/dpaa2.ini NXP enetc M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/net/enetc/ F: doc/guides/nics/enetc.rst F: doc/guides/nics/features/enetc.ini @@ -929,18 +1057,21 @@ F: doc/guides/nics/features/enetc.ini NXP enetfec - EXPERIMENTAL M: Apeksha Gupta <apeksha.gupta@nxp.com> M: Sachin Saxena <sachin.saxena@nxp.com> +S: Supported F: drivers/net/enetfec/ F: doc/guides/nics/enetfec.rst F: doc/guides/nics/features/enetfec.ini NXP pfe M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: doc/guides/nics/pfe.rst F: drivers/net/pfe/ F: doc/guides/nics/features/pfe.ini Marvell QLogic bnx2x M: Julien Aube <julien_dpdk@jaube.fr> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/bnx2x/ F: doc/guides/nics/bnx2x.rst @@ -949,6 +1080,7 @@ F: doc/guides/nics/features/bnx2x*.ini Marvell QLogic qede PMD M: Devendra Singh Rawat <dsinghrawat@marvell.com> M: Alok Prasad <palok@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/qede/ F: doc/guides/nics/qede.rst @@ -956,6 +1088,7 @@ F: doc/guides/nics/features/qede*.ini Solarflare sfc_efx M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/common/sfc_efx/ F: drivers/net/sfc/ F: doc/guides/nics/sfc_efx.rst @@ -963,6 +1096,7 @@ F: doc/guides/nics/features/sfc.ini Wangxun ngbe M: Jiawen Wu <jiawenwu@trustnetic.com> +S: Supported F: drivers/net/ngbe/ F: doc/guides/nics/ngbe.rst F: doc/guides/nics/features/ngbe.ini @@ -970,12 +1104,14 @@ F: doc/guides/nics/features/ngbe.ini Wangxun txgbe M: Jiawen Wu <jiawenwu@trustnetic.com> M: Jian Wang <jianwang@trustnetic.com> +S: Supported F: drivers/net/txgbe/ F: doc/guides/nics/txgbe.rst F: doc/guides/nics/features/txgbe.ini VMware vmxnet3 M: Jochen Behrens <jbehrens@vmware.com> +S: Supported F: drivers/net/vmxnet3/ F: doc/guides/nics/vmxnet3.rst F: doc/guides/nics/features/vmxnet3.ini @@ -983,6 +1119,7 @@ F: doc/guides/nics/features/vmxnet3.ini Vhost-user M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: lib/vhost/ F: doc/guides/prog_guide/vhost_lib.rst @@ -997,6 +1134,7 @@ F: doc/guides/sample_app_ug/vdpa.rst Vhost PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/vhost/ F: doc/guides/nics/vhost.rst @@ -1005,6 +1143,7 @@ F: doc/guides/nics/features/vhost.ini Virtio PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/virtio/ F: doc/guides/nics/virtio.rst @@ -1013,26 +1152,31 @@ F: doc/guides/nics/features/virtio*.ini Wind River AVP M: Steven Webster <steven.webster@windriver.com> M: Matt Peters <matt.peters@windriver.com> +S: Supported F: drivers/net/avp/ F: doc/guides/nics/avp.rst F: doc/guides/nics/features/avp.ini PCAP PMD +S: Orphan F: drivers/net/pcap/ F: doc/guides/nics/pcap_ring.rst F: doc/guides/nics/features/pcap.ini Tap PMD +S: Orphan F: drivers/net/tap/ F: doc/guides/nics/tap.rst F: doc/guides/nics/features/tap.ini KNI PMD +S: Obsolete F: drivers/net/kni/ F: doc/guides/nics/kni.rst Ring PMD M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: drivers/net/ring/ F: doc/guides/nics/pcap_ring.rst F: app/test/test_pmd_ring.c @@ -1040,21 +1184,25 @@ F: app/test/test_pmd_ring_perf.c Null Networking PMD M: Tetsuya Mukawa <mtetsuyah@gmail.com> +S: Supported F: drivers/net/null/ Fail-safe PMD M: Gaetan Rivet <grive@u256.net> +S: Supported F: drivers/net/failsafe/ F: doc/guides/nics/fail_safe.rst F: doc/guides/nics/features/failsafe.ini Softnic PMD M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: drivers/net/softnic/ F: doc/guides/nics/softnic.rst Memif PMD M: Jakub Grajciar <jgrajcia@cisco.com> +S: Supported F: drivers/net/memif/ F: doc/guides/nics/memif.rst F: doc/guides/nics/features/memif.ini @@ -1062,17 +1210,20 @@ F: doc/guides/nics/features/memif.ini Crypto Drivers -------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto F: doc/guides/cryptodevs/features/default.ini AMD CCP Crypto M: Sunil Uttarwar <sunilprakashrao.uttarwar@amd.com> +S: Supported F: drivers/crypto/ccp/ F: doc/guides/cryptodevs/ccp.rst F: doc/guides/cryptodevs/features/ccp.ini ARMv8 Crypto M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: drivers/crypto/armv8/ F: doc/guides/cryptodevs/armv8.rst F: doc/guides/cryptodevs/features/armv8.ini @@ -1081,12 +1232,14 @@ Broadcom FlexSparc M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com> M: Vikas Gupta <vikas.gupta@broadcom.com> +S: Supported F: drivers/crypto/bcmfs/ F: doc/guides/cryptodevs/bcmfs.rst F: doc/guides/cryptodevs/features/bcmfs.ini Cavium OCTEON TX crypto M: Anoob Joseph <anoobj@marvell.com> +S: Supported F: drivers/common/cpt/ F: drivers/crypto/octeontx/ F: doc/guides/cryptodevs/octeontx.rst @@ -1094,17 +1247,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini Crypto Scheduler M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/scheduler/ F: doc/guides/cryptodevs/scheduler.rst HiSilicon UADK crypto M: Zhangfei Gao <zhangfei.gao@linaro.org> +S: Supported F: drivers/crypto/uadk/ F: doc/guides/cryptodevs/uadk.rst F: doc/guides/cryptodevs/features/uadk.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/qat/ F: drivers/common/qat/ F: doc/guides/cryptodevs/qat.rst @@ -1113,6 +1269,7 @@ F: doc/guides/cryptodevs/features/qat.ini IPsec MB M: Kai Ji <kai.ji@intel.com> M: Pablo de Lara <pablo.de.lara.guarch@intel.com> +S: Supported F: drivers/crypto/ipsec_mb/ F: doc/guides/cryptodevs/aesni_gcm.rst F: doc/guides/cryptodevs/aesni_mb.rst @@ -1131,6 +1288,7 @@ Marvell cnxk crypto M: Ankur Dwivedi <adwivedi@marvell.com> M: Anoob Joseph <anoobj@marvell.com> M: Tejasree Kondoj <ktejasree@marvell.com> +S: Supported F: drivers/crypto/cnxk/ F: doc/guides/cryptodevs/cnxk.rst F: doc/guides/cryptodevs/features/cn9k.ini @@ -1139,6 +1297,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini Marvell mvsam M: Michael Shamis <michaelsh@marvell.com> M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/crypto/mvsam/ F: doc/guides/cryptodevs/mvsam.rst F: doc/guides/cryptodevs/features/mvsam.ini @@ -1146,18 +1305,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini Marvell Nitrox M: Nagadheeraj Rottela <rnagadheeraj@marvell.com> M: Srikanth Jampala <jsrikanth@marvell.com> +S: Supported F: drivers/crypto/nitrox/ F: doc/guides/cryptodevs/nitrox.rst F: doc/guides/cryptodevs/features/nitrox.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/crypto/mlx5/ F: doc/guides/cryptodevs/mlx5.rst F: doc/guides/cryptodevs/features/mlx5.ini Null Crypto M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/null/ F: doc/guides/cryptodevs/null.rst F: doc/guides/cryptodevs/features/null.ini @@ -1165,6 +1327,7 @@ F: doc/guides/cryptodevs/features/null.ini NXP CAAM JR M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/caam_jr/ F: doc/guides/cryptodevs/caam_jr.rst F: doc/guides/cryptodevs/features/caam_jr.ini @@ -1172,6 +1335,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini NXP DPAA_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa_sec/ F: doc/guides/cryptodevs/dpaa_sec.rst F: doc/guides/cryptodevs/features/dpaa_sec.ini @@ -1179,18 +1343,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini NXP DPAA2_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa2_sec/ F: doc/guides/cryptodevs/dpaa2_sec.rst F: doc/guides/cryptodevs/features/dpaa2_sec.ini OpenSSL M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/openssl/ F: doc/guides/cryptodevs/openssl.rst F: doc/guides/cryptodevs/features/openssl.ini Virtio M: Jay Zhou <jianjay.zhou@huawei.com> +S: Supported F: drivers/crypto/virtio/ F: doc/guides/cryptodevs/virtio.rst F: doc/guides/cryptodevs/features/virtio.ini @@ -1198,31 +1365,37 @@ F: doc/guides/cryptodevs/features/virtio.ini Compression Drivers ------------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto Cavium OCTEON TX zipvf M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported F: drivers/compress/octeontx/ F: doc/guides/compressdevs/octeontx.rst F: doc/guides/compressdevs/features/octeontx.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/compress/qat/ F: drivers/common/qat/ ISA-L M: Lee Daly <lee.daly@intel.com> +S: Supported F: drivers/compress/isal/ F: doc/guides/compressdevs/isal.rst F: doc/guides/compressdevs/features/isal.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/compress/mlx5/ ZLIB M: Sunila Sahu <ssahu@marvell.com> +S: Supported F: drivers/compress/zlib/ F: doc/guides/compressdevs/zlib.rst F: doc/guides/compressdevs/features/zlib.ini @@ -1234,34 +1407,40 @@ DMAdev Drivers Intel IDXD - EXPERIMENTAL M: Bruce Richardson <bruce.richardson@intel.com> M: Kevin Laatz <kevin.laatz@intel.com> +S: Supported F: drivers/dma/idxd/ F: doc/guides/dmadevs/idxd.rst Intel IOAT M: Bruce Richardson <bruce.richardson@intel.com> M: Conor Walsh <conor.walsh@intel.com> +S: Supported F: drivers/dma/ioat/ F: doc/guides/dmadevs/ioat.rst HiSilicon DMA M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: drivers/dma/hisilicon/ F: doc/guides/dmadevs/hisilicon.rst Marvell CNXK DPI DMA M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported F: drivers/dma/cnxk/ F: doc/guides/dmadevs/cnxk.rst NXP DPAA DMA M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/dma/dpaa/ F: doc/guides/dmadevs/dpaa.rst NXP DPAA2 QDMA M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/dma/dpaa2/ F: doc/guides/dmadevs/dpaa2.rst @@ -1271,12 +1450,14 @@ RegEx Drivers Marvell OCTEON CN9K regex M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/regex/cn9k/ F: doc/guides/regexdevs/cn9k.rst F: doc/guides/regexdevs/features/cn9k.ini NVIDIA mlx5 M: Ori Kam <orika@nvidia.com> +S: Supported F: drivers/regex/mlx5/ F: doc/guides/regexdevs/mlx5.rst F: doc/guides/regexdevs/features/mlx5.ini @@ -1287,6 +1468,7 @@ MLdev Drivers Marvell ML CNXK M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: drivers/common/cnxk/hw/ml.h F: drivers/common/cnxk/roc_ml* F: drivers/ml/cnxk/ @@ -1299,6 +1481,7 @@ T: git://dpdk.org/next/dpdk-next-virtio Intel ifc M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported F: drivers/vdpa/ifc/ F: doc/guides/vdpadevs/ifc.rst F: doc/guides/vdpadevs/features/ifcvf.ini @@ -1306,12 +1489,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini NVIDIA mlx5 vDPA M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported F: drivers/vdpa/mlx5/ F: doc/guides/vdpadevs/mlx5.rst F: doc/guides/vdpadevs/features/mlx5.ini Xilinx sfc vDPA M: Vijay Kumar Srivastava <vsrivast@xilinx.com> +S: Supported F: drivers/vdpa/sfc/ F: doc/guides/vdpadevs/sfc.rst F: doc/guides/vdpadevs/features/sfc.ini @@ -1320,42 +1505,50 @@ F: doc/guides/vdpadevs/features/sfc.ini Eventdev Drivers ---------------- M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Cavium OCTEON TX ssovf M: Jerin Jacob <jerinj@marvell.com> +S: Supported F: drivers/event/octeontx/ F: doc/guides/eventdevs/octeontx.rst Cavium OCTEON TX timvf M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: drivers/event/octeontx/timvf_* Intel DLB2 M: Timothy McDaniel <timothy.mcdaniel@intel.com> +S: Supported F: drivers/event/dlb2/ F: doc/guides/eventdevs/dlb2.rst Marvell cnxk M: Pavan Nikhilesh <pbhagavatula@marvell.com> M: Shijith Thotton <sthotton@marvell.com> +S: Supported F: drivers/event/cnxk/ F: doc/guides/eventdevs/cnxk.rst NXP DPAA eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa/ F: doc/guides/eventdevs/dpaa.rst NXP DPAA2 eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa2/ F: doc/guides/eventdevs/dpaa2.rst Software Eventdev PMD M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: drivers/event/sw/ F: doc/guides/eventdevs/sw.rst F: examples/eventdev_pipeline/ @@ -1363,11 +1556,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst Distributed Software Eventdev PMD M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: drivers/event/dsw/ F: doc/guides/eventdevs/dsw.rst Software OPDL Eventdev PMD M: Liang Ma <liangma@liangbit.com> +S: Supported M: Peter Mccarthy <peter.mccarthy@intel.com> F: drivers/event/opdl/ F: doc/guides/eventdevs/opdl.rst @@ -1378,6 +1573,7 @@ Baseband Drivers Intel baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/turbo_sw/ F: doc/guides/bbdevs/turbo_sw.rst @@ -1397,6 +1593,7 @@ F: doc/guides/bbdevs/features/vrb1.ini Null baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/null/ F: doc/guides/bbdevs/null.rst @@ -1405,6 +1602,7 @@ F: doc/guides/bbdevs/features/null.ini NXP LA12xx M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/la12xx/ F: doc/guides/bbdevs/la12xx.rst @@ -1416,6 +1614,7 @@ GPU Drivers NVIDIA CUDA M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: drivers/gpu/cuda/ F: doc/guides/gpus/cuda.rst @@ -1426,6 +1625,7 @@ Rawdev Drivers Intel FPGA M: Rosen Xu <rosen.xu@intel.com> M: Tianfei zhang <tianfei.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/raw/ifpga/ F: doc/guides/rawdevs/ifpga.rst @@ -1433,18 +1633,21 @@ F: doc/guides/rawdevs/ifpga.rst Marvell CNXK BPHY M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_bphy.rst F: drivers/raw/cnxk_bphy/ Marvell CNXK GPIO M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_gpio.rst F: drivers/raw/cnxk_gpio/ NTB M: Jingjing Wu <jingjing.wu@intel.com> M: Junfeng Guo <junfeng.guo@intel.com> +S: Supported F: drivers/raw/ntb/ F: doc/guides/rawdevs/ntb.rst F: examples/ntb/ @@ -1452,6 +1655,7 @@ F: doc/guides/sample_app_ug/ntb.rst NXP DPAA2 CMDIF M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: drivers/raw/dpaa2_cmdif/ F: doc/guides/rawdevs/dpaa2_cmdif.rst @@ -1461,12 +1665,14 @@ Packet processing Network headers M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/net/ F: app/test/test_cksum.c F: app/test/test_cksum_perf.c Packet CRC M: Jasvinder Singh <jasvinder.singh@intel.com> +S: Supported F: lib/net/net_crc.h F: lib/net/rte_net_crc* F: lib/net/net_crc_avx512.c @@ -1475,6 +1681,7 @@ F: app/test/test_crc.c IP fragmentation & reassembly M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ip_frag/ F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst F: app/test/test_ipfrag.c @@ -1486,16 +1693,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst Generic Receive Offload - EXPERIMENTAL M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gro/ F: doc/guides/prog_guide/generic_receive_offload_lib.rst Generic Segmentation Offload M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gso/ F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst IPsec M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/ipsec/ F: app/test/test_ipsec* @@ -1506,12 +1716,14 @@ F: app/test-sad/ PDCP - EXPERIMENTAL M: Anoob Joseph <anoobj@marvell.com> M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/pdcp/ F: doc/guides/prog_guide/pdcp_lib.rst F: app/test/test_pdcp* Flow Classify - EXPERIMENTAL - UNMAINTAINED +S: Orphan F: lib/flow_classify/ F: app/test/test_flow_classify* F: doc/guides/prog_guide/flow_classify_lib.rst @@ -1520,6 +1732,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst Distributor M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/distributor/ F: doc/guides/prog_guide/packet_distrib_lib.rst F: app/test/test_distributor* @@ -1528,6 +1741,7 @@ F: doc/guides/sample_app_ug/dist_app.rst Reorder M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported F: lib/reorder/ F: doc/guides/prog_guide/reorder_lib.rst F: app/test/test_reorder* @@ -1536,6 +1750,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst Hierarchical scheduler M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/sched/ F: doc/guides/prog_guide/qos_framework.rst F: app/test/test_pie.c @@ -1547,6 +1762,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst Packet capture M: Reshma Pattan <reshma.pattan@intel.com> M: Stephen Hemminger <stephen@networkplumber.org> +S: Maintained F: lib/pdump/ F: doc/guides/prog_guide/pdump_lib.rst F: app/test/test_pdump.* @@ -1562,6 +1778,7 @@ F: doc/guides/tools/dumpcap.rst Packet Framework ---------------- M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/pipeline/ F: lib/port/ F: lib/table/ @@ -1579,6 +1796,7 @@ Algorithms ACL M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/acl/ F: doc/guides/prog_guide/packet_classif_access_ctrl.rst F: app/test-acl/ @@ -1587,6 +1805,7 @@ F: app/test/test_acl.* EFD M: Byron Marohn <byron.marohn@intel.com> M: Yipeng Wang <yipeng1.wang@intel.com> +S: Supported F: lib/efd/ F: doc/guides/prog_guide/efd_lib.rst F: app/test/test_efd* @@ -1598,6 +1817,7 @@ M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/hash/ F: doc/guides/prog_guide/hash_lib.rst F: doc/guides/prog_guide/toeplitz_hash_lib.rst @@ -1607,6 +1827,7 @@ F: app/test/test_func_reentrancy.c LPM M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/lpm/ F: doc/guides/prog_guide/lpm* F: app/test/test_lpm* @@ -1616,12 +1837,14 @@ F: app/test/test_xmmt_ops.h Membership - EXPERIMENTAL M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> +S: Supported F: lib/member/ F: doc/guides/prog_guide/member_lib.rst F: app/test/test_member* RIB/FIB M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/rib/ F: app/test/test_rib* F: lib/fib/ @@ -1630,6 +1853,7 @@ F: app/test-fib/ Traffic metering M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/meter/ F: doc/guides/sample_app_ug/qos_scheduler.rst F: app/test/test_meter.c @@ -1642,12 +1866,14 @@ Other libraries Configuration file M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/cfgfile/ F: app/test/test_cfgfile.c F: app/test/test_cfgfiles/ Interactive command line M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/cmdline/ F: app/test-cmdline/ F: app/test/test_cmdline* @@ -1656,11 +1882,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst Key/Value parsing M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/kvargs/ F: app/test/test_kvargs.c RCU M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/rcu/ F: app/test/test_rcu* F: doc/guides/prog_guide/rcu_lib.rst @@ -1668,11 +1896,13 @@ F: doc/guides/prog_guide/rcu_lib.rst PCI M: Chenbo Xia <chenbo.xia@intel.com> M: Gaetan Rivet <grive@u256.net> +S: Supported F: lib/pci/ Power management M: Anatoly Burakov <anatoly.burakov@intel.com> M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/power/ F: doc/guides/prog_guide/power_man.rst F: app/test/test_power* @@ -1683,6 +1913,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst Timers M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported F: lib/timer/ F: doc/guides/prog_guide/timer_lib.rst F: app/test/test_timer* @@ -1690,25 +1921,30 @@ F: examples/timer/ F: doc/guides/sample_app_ug/timer.rst Job statistics +S: Orphan F: lib/jobstats/ F: examples/l2fwd-jobstats/ F: doc/guides/sample_app_ug/l2_forward_job_stats.rst Metrics +S: Orphan F: lib/metrics/ F: app/test/test_metrics.c Bit-rate statistics +S: Orphan F: lib/bitratestats/ F: app/test/test_bitratestats.c Latency statistics M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: lib/latencystats/ F: app/test/test_latencystats.c Telemetry M: Ciara Power <ciara.power@intel.com> +S: Supported F: lib/telemetry/ F: app/test/test_telemetry* F: usertools/dpdk-telemetry* @@ -1716,6 +1952,7 @@ F: doc/guides/howto/telemetry.rst BPF M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/bpf/ F: examples/bpf/ F: app/test/test_bpf.c @@ -1727,6 +1964,7 @@ M: Jerin Jacob <jerinj@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Zhirun Yan <zhirun.yan@intel.com> +S: Supported F: lib/graph/ F: doc/guides/prog_guide/graph_lib.rst F: app/test/test_graph* @@ -1736,6 +1974,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst Nodes - EXPERIMENTAL M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: lib/node/ @@ -1743,6 +1982,7 @@ Test Applications ----------------- Unit tests framework +S: Maintained F: app/test/commands.c F: app/test/has_hugepage.py F: app/test/packet_burst_generator.c @@ -1758,45 +1998,53 @@ F: app/test/virtual_pmd.h Sample packet helper functions for unit test M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/test/sample_packet_forward.c F: app/test/sample_packet_forward.h Networking drivers testing tool M: Aman Singh <aman.deep.singh@intel.com> M: Yuying Zhang <yuying.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/ F: doc/guides/testpmd_app_ug/ DMA device performance tool M: Cheng Jiang <cheng1.jiang@intel.com> +S: Supported F: app/test-dma-perf/ F: doc/guides/tools/dmaperf.rst Flow performance tool M: Wisam Jaddo <wisamm@nvidia.com> +S: Supported F: app/test-flow-perf/ F: doc/guides/tools/flow-perf.rst Security performance tool M: Anoob Joseph <anoobj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-security-perf/ F: doc/guides/tools/securityperf.rst Compression performance test application T: git://dpdk.org/next/dpdk-next-crypto +S: Orphan F: app/test-compress-perf/ F: doc/guides/tools/comp_perf.rst Crypto performance test application M: Ciara Power <ciara.power@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-crypto-perf/ F: doc/guides/tools/cryptoperf.rst Eventdev test application M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: app/test-eventdev/ F: doc/guides/tools/testeventdev.rst @@ -1806,12 +2054,14 @@ F: app/test/test_event_ring.c Procinfo tool M: Maryam Tahhan <maryam.tahhan@intel.com> M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/proc-info/ F: doc/guides/tools/proc_info.rst DTS M: Lijuan Tu <lijuan.tu@intel.com> M: Juraj Linkeš <juraj.linkes@pantheon.tech> +S: Supported F: dts/ F: devtools/dts-check-format.sh F: doc/guides/tools/dts.rst @@ -1821,77 +2071,92 @@ Other Example Applications -------------------------- Ethtool example +S: Orphan F: examples/ethtool/ F: doc/guides/sample_app_ug/ethtool.rst FIPS validation example M: Brian Dooley <brian.dooley@intel.com> M: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com> +S: Supported F: examples/fips_validation/ F: doc/guides/sample_app_ug/fips_validation.rst Flow filtering example M: Ori Kam <orika@nvidia.com> +S: Supported F: examples/flow_filtering/ F: doc/guides/sample_app_ug/flow_filtering.rst Helloworld example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/helloworld/ F: doc/guides/sample_app_ug/hello_world.rst IPsec security gateway example M: Radu Nicolau <radu.nicolau@intel.com> M: Akhil Goyal <gakhil@marvell.com> +S: Supported F: examples/ipsec-secgw/ F: doc/guides/sample_app_ug/ipsec_secgw.rst IPv4 multicast example +S: Orphan F: examples/ipv4_multicast/ F: doc/guides/sample_app_ug/ipv4_multicast.rst L2 forwarding example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/l2fwd/ F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst L2 forwarding with cache allocation example M: Tomasz Kantecki <tomasz.kantecki@intel.com> +S: Supported F: doc/guides/sample_app_ug/l2_forward_cat.rst F: examples/l2fwd-cat/ L2 forwarding with eventdev example M: Sunil Kumar Kori <skori@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: examples/l2fwd-event/ F: doc/guides/sample_app_ug/l2_forward_event.rst L3 forwarding example +S: Maintained F: examples/l3fwd/ F: doc/guides/sample_app_ug/l3_forward.rst Link status interrupt example +S: Maintained F: examples/link_status_interrupt/ F: doc/guides/sample_app_ug/link_status_intr.rst PTP client example M: Kirill Rybalchenko <kirill.rybalchenko@intel.com> +S: Supported F: examples/ptpclient/ Rx/Tx callbacks example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/rxtx_callbacks/ F: doc/guides/sample_app_ug/rxtx_callbacks.rst Skeleton example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/skeleton/ F: doc/guides/sample_app_ug/skeleton.rst VMDq examples +S: Orphan F: examples/vmdq/ F: doc/guides/sample_app_ug/vmdq_forwarding.rst F: examples/vmdq_dcb/ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v2] MAINTAINERS: add status information 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger @ 2023-07-19 16:07 ` Stephen Hemminger 2023-07-20 17:21 ` [PATCH v3] " Stephen Hemminger ` (6 subsequent siblings) 7 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-19 16:07 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- v2 - mark FreeBSD as Odd Fixes - pipeline, table, port are marked as deprecated so should be Obsolete MAINTAINERS | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 266 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 5bb8090ebe7e..7882a3c020bc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17,6 +17,16 @@ Descriptions of section entries: X: Files and directories exclusion, same rules as F: K: Keyword regex pattern to match content. One regex pattern per line. Multiple K: lines acceptable. + S: *Status*, one of the following: + Supported: Someone is actually paid to look after this. + Maintained: Someone actually looks after it. + Odd Fixes: It has a maintainer but they don't have time to do + much other than throw the odd patch in. See below.. + Orphan: No current maintainer [but maybe you could take the + role as you write your new code]. + Obsolete: Old code. Something tagged obsolete generally means + it has been replaced by a better system and you + should be using that. General Project Administration @@ -25,44 +35,54 @@ General Project Administration Main Branch M: Thomas Monjalon <thomas@monjalon.net> M: David Marchand <david.marchand@redhat.com> +S: Supported T: git://dpdk.org/dpdk Next-net Tree M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net Next-net-brcm Tree M: Ajit Khaparde <ajit.khaparde@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm Next-net-intel Tree M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel Next-net-mrvl Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl Next-net-mlx Tree M: Raslan Darawsheh <rasland@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx Next-virtio Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio Next-crypto Tree M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto Next-eventdev Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Next-baseband Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband Stable Branches @@ -70,17 +90,21 @@ M: Luca Boccassi <bluca@debian.org> M: Kevin Traynor <ktraynor@redhat.com> M: Christian Ehrhardt <christian.ehrhardt@canonical.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported T: git://dpdk.org/dpdk-stable Security Issues M: maintainers@dpdk.org +S: Supported Documentation (with overlaps) F: README F: doc/ +S: Supported Developers and Maintainers Tools M: Thomas Monjalon <thomas@monjalon.net> +S: Supported F: MAINTAINERS F: devtools/build-dict.sh F: devtools/check-abi.sh @@ -110,7 +134,7 @@ F: .mailmap Build System M: Bruce Richardson <bruce.richardson@intel.com> -F: Makefile +S: Maintained F: meson.build F: meson_options.txt F: config/ @@ -130,11 +154,13 @@ F: devtools/check-meson.py Public CI M: Aaron Conole <aconole@redhat.com> M: Michael Santana <maicolgabriel@hotmail.com> +S: Supported F: .github/workflows/build.yml F: .ci/ Driver information M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Maintained F: buildtools/coff.py F: buildtools/gen-pmdinfo-cfile.py F: buildtools/pmdinfogen.py @@ -147,6 +173,7 @@ Environment Abstraction Layer T: git://dpdk.org/dpdk EAL API and common code +S: Supported F: lib/eal/common/ F: lib/eal/unix/ F: lib/eal/include/ @@ -180,6 +207,7 @@ F: app/test/test_version.c Trace - EXPERIMENTAL M: Jerin Jacob <jerinj@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> +S: Supported F: lib/eal/include/rte_trace*.h F: lib/eal/common/eal_common_trace*.c F: lib/eal/common/eal_trace.h @@ -188,6 +216,7 @@ F: app/test/test_trace* Memory Allocation M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/include/rte_fbarray.h F: lib/eal/include/rte_mem* F: lib/eal/include/rte_malloc.h @@ -209,11 +238,13 @@ F: app/test/test_memzone.c Interrupt Subsystem M: Harman Kalra <hkalra@marvell.com> +S: Supported F: lib/eal/include/rte_epoll.h F: lib/eal/*/*interrupts.* F: app/test/test_interrupts.c Keep alive +S: Orphan F: lib/eal/include/rte_keepalive.h F: lib/eal/common/rte_keepalive.c F: examples/l2fwd-keepalive/ @@ -221,6 +252,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst Secondary process M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Maintained K: RTE_PROC_ F: lib/eal/common/eal_common_proc.c F: doc/guides/prog_guide/multi_proc_support.rst @@ -230,6 +262,7 @@ F: doc/guides/sample_app_ug/multi_process.rst Service Cores M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: lib/eal/include/rte_service.h F: lib/eal/include/rte_service_component.h F: lib/eal/common/rte_service.c @@ -240,44 +273,52 @@ F: doc/guides/sample_app_ug/service_cores.rst Bitops M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_bitops.h F: app/test/test_bitops.c Bitmap M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/eal/include/rte_bitmap.h F: app/test/test_bitmap.c MCSlock M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/eal/include/rte_mcslock.h F: app/test/test_mcslock.c Sequence Lock M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_seqcount.h F: lib/eal/include/rte_seqlock.h F: app/test/test_seqlock.c Ticketlock M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_ticketlock.h F: app/test/test_ticketlock.c Pseudo-random Number Generation M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_random.h F: lib/eal/common/rte_random.c F: app/test/test_rand_perf.c ARM v7 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: lib/eal/arm/ X: lib/eal/arm/include/*_64.h ARM v8 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst F: lib/eal/arm/ @@ -291,12 +332,14 @@ F: examples/common/neon/ LoongArch M: Min Zhou <zhoumin@loongson.cn> +S: Supported F: config/loongarch/ F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst F: lib/eal/loongarch/ IBM POWER (alpha) M: David Christensen <drc@linux.vnet.ibm.com> +S: Supported F: config/ppc/ F: lib/eal/ppc/ F: lib/*/*_altivec* @@ -307,6 +350,7 @@ F: examples/common/altivec/ RISC-V M: Stanislaw Kardach <kda@semihalf.com> +S: Supported F: config/riscv/ F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst F: lib/eal/riscv/ @@ -314,6 +358,7 @@ F: lib/eal/riscv/ Intel x86 M: Bruce Richardson <bruce.richardson@intel.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: config/x86/ F: doc/guides/linux_gsg/nic_perf_intel_platform.rst F: buildtools/binutils-avx512-check.py @@ -330,28 +375,34 @@ F: examples/*/*_avx* F: examples/common/sse/ Linux EAL (with overlaps) +S: Maintained F: lib/eal/linux/ F: doc/guides/linux_gsg/ Linux UIO +S: Maintained F: drivers/bus/pci/linux/*uio* Linux VFIO M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/linux/*vfio* F: drivers/bus/pci/linux/*vfio* FreeBSD EAL (with overlaps) M: Bruce Richardson <bruce.richardson@intel.com> +S: Odd Fixes F: lib/eal/freebsd/ F: doc/guides/freebsd_gsg/ FreeBSD contigmem M: Bruce Richardson <bruce.richardson@intel.com> +S: Oddd Fixes F: kernel/freebsd/contigmem/ FreeBSD UIO M: Bruce Richardson <bruce.richardson@intel.com> +S: Odd Fixes F: kernel/freebsd/nic_uio/ Windows support @@ -359,12 +410,14 @@ M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> M: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com> M: Dmitry Malloy <dmitrym@microsoft.com> M: Pallavi Kadam <pallavi.kadam@intel.com> +S: Supported F: lib/eal/windows/ F: buildtools/map_to_win.py F: doc/guides/windows_gsg/ Windows memory allocation M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Supported F: lib/eal/windows/eal_hugepages.c F: lib/eal/windows/eal_mem* @@ -372,10 +425,12 @@ F: lib/eal/windows/eal_mem* Core Libraries -------------- T: git://dpdk.org/dpdk +S: Maintained Memory pool M: Olivier Matz <olivier.matz@6wind.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: lib/mempool/ F: drivers/mempool/ring/ F: doc/guides/prog_guide/mempool_lib.rst @@ -385,6 +440,7 @@ F: app/test/test_func_reentrancy.c Ring queue M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ring/ F: doc/guides/prog_guide/ring_lib.rst F: app/test/test_ring* @@ -392,6 +448,7 @@ F: app/test/test_func_reentrancy.c Stack M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/stack/ F: drivers/mempool/stack/ F: app/test/test_stack* @@ -399,6 +456,7 @@ F: doc/guides/prog_guide/stack_lib.rst Packet buffer M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/mbuf/ F: doc/guides/prog_guide/mbuf_lib.rst F: app/test/test_mbuf.c @@ -407,6 +465,7 @@ Ethernet API M: Thomas Monjalon <thomas@monjalon.net> M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/ F: app/test/test_ethdev* @@ -415,6 +474,7 @@ F: doc/guides/prog_guide/switch_representation.rst Flow API M: Ori Kam <orika@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/cmdline_flow.c F: doc/guides/prog_guide/rte_flow.rst @@ -422,18 +482,21 @@ F: lib/ethdev/rte_flow* Traffic Management API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_tm* F: app/test-pmd/cmdline_tm.* Traffic Metering and Policing API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_mtr* F: app/test-pmd/cmdline_mtr.* Baseband API M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: lib/bbdev/ F: doc/guides/prog_guide/bbdev.rst @@ -446,6 +509,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst Crypto API M: Akhil Goyal <gakhil@marvell.com> M: Fan Zhang <fanzhang.oss@gmail.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/cryptodev/ F: app/test/test_cryptodev* @@ -453,6 +517,7 @@ F: examples/l2fwd-crypto/ Security API M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/security/ F: doc/guides/prog_guide/rte_security.rst @@ -461,6 +526,7 @@ F: app/test/test_security* Compression API - EXPERIMENTAL M: Fan Zhang <fanzhang.oss@gmail.com> M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/compressdev/ F: drivers/compress/ @@ -470,6 +536,7 @@ F: doc/guides/compressdevs/features/default.ini RegEx API - EXPERIMENTAL M: Ori Kam <orika@nvidia.com> +S: Supported F: lib/regexdev/ F: app/test-regex/ F: doc/guides/prog_guide/regexdev.rst @@ -477,6 +544,7 @@ F: doc/guides/regexdevs/features/default.ini Machine Learning device API - EXPERIMENTAL M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: lib/mldev/ F: doc/guides/prog_guide/mldev.rst F: app/test-mldev/ @@ -484,6 +552,7 @@ F: doc/guides/tools/testmldev.rst DMA device API - EXPERIMENTAL M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: lib/dmadev/ F: drivers/dma/skeleton/ F: app/test/test_dmadev* @@ -495,6 +564,7 @@ F: doc/guides/sample_app_ug/dma.rst General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: lib/gpudev/ F: doc/guides/prog_guide/gpudev.rst F: doc/guides/gpus/features/default.ini @@ -502,6 +572,7 @@ F: app/test-gpudev/ Eventdev API M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/ F: drivers/event/skeleton/ @@ -510,6 +581,7 @@ F: examples/l3fwd/l3fwd_event* Eventdev Ethdev Rx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_rx_adapter* F: app/test/test_event_eth_rx_adapter.c @@ -517,6 +589,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst Eventdev Ethdev Tx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_tx_adapter* F: app/test/test_event_eth_tx_adapter.c @@ -524,6 +597,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst Eventdev Timer Adapter API M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*timer_adapter* F: app/test/test_event_timer_adapter.c @@ -531,6 +605,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst Eventdev Crypto Adapter API M: Abhinandan Gujjar <abhinandan.gujjar@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*crypto_adapter* F: app/test/test_event_crypto_adapter.c @@ -539,6 +614,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst Raw device API M: Sachin Saxena <sachin.saxena@oss.nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: lib/rawdev/ F: drivers/raw/skeleton/ F: app/test/test_rawdev.c @@ -551,11 +627,13 @@ Memory Pool Drivers Bucket memory pool M: Artem V. Andreev <artem.andreev@oktetlabs.ru> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/mempool/bucket/ Marvell cnxk M: Ashwin Sekhar T K <asekhar@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/mempool/cnxk/ F: doc/guides/mempool/cnxk.rst @@ -567,20 +645,24 @@ Bus Drivers AMD CDX bus M: Nipun Gupta <nipun.gupta@amd.com> M: Nikhil Agarwal <nikhil.agarwal@amd.com> +S: Supported F: drivers/bus/cdx/ Auxiliary bus driver - EXPERIMENTAL M: Parav Pandit <parav@nvidia.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported F: drivers/bus/auxiliary/ Intel FPGA bus M: Rosen Xu <rosen.xu@intel.com> +S: Supported F: drivers/bus/ifpga/ NXP buses M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/common/dpaax/ F: drivers/bus/dpaa/ F: drivers/bus/fslmc/ @@ -588,36 +670,43 @@ F: drivers/bus/fslmc/ PCI bus driver M: Chenbo Xia <chenbo.xia@intel.com> M: Nipun Gupta <nipun.gupta@amd.com> +S: Supported F: drivers/bus/pci/ Platform bus driver M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: drivers/bus/platform/ VDEV bus driver +S: Maintained F: drivers/bus/vdev/ F: app/test/test_vdev.c VMBUS bus driver M: Long Li <longli@microsoft.com> +S: Supported F: drivers/bus/vmbus/ Networking Drivers ------------------ M: Ferruh Yigit <ferruh.yigit@amd.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: doc/guides/nics/features/default.ini Link bonding M: Chas Williams <chas3@att.com> M: Min Hu (Connor) <humin29@huawei.com> +S: Supported F: drivers/net/bonding/ F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst F: app/test/test_link_bonding* F: examples/bond/ Linux KNI +S: Obsolete F: kernel/linux/kni/ F: lib/kni/ F: doc/guides/prog_guide/kernel_nic_interface.rst @@ -625,12 +714,14 @@ F: app/test/test_kni.c Linux AF_PACKET M: John W. Linville <linville@tuxdriver.com> +S: Odd Fixes F: drivers/net/af_packet/ F: doc/guides/nics/features/afpacket.ini Linux AF_XDP M: Ciara Loftus <ciara.loftus@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported F: drivers/net/af_xdp/ F: doc/guides/nics/af_xdp.rst F: doc/guides/nics/features/af_xdp.ini @@ -641,24 +732,28 @@ M: Shai Brandes <shaibran@amazon.com> M: Evgeny Schemeilin <evgenys@amazon.com> M: Igor Chauskin <igorch@amazon.com> M: Ron Beider <rbeider@amazon.com> +S: Supported F: drivers/net/ena/ F: doc/guides/nics/ena.rst F: doc/guides/nics/features/ena.ini AMD axgbe M: Chandubabu Namburu <chandu@amd.com> +S: Supported F: drivers/net/axgbe/ F: doc/guides/nics/axgbe.rst F: doc/guides/nics/features/axgbe.ini AMD Pensando ionic M: Andrew Boyer <andrew.boyer@amd.com> +S: Supported F: drivers/net/ionic/ F: doc/guides/nics/ionic.rst F: doc/guides/nics/features/ionic.ini Marvell/Aquantia atlantic M: Igor Russkikh <irusskikh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/atlantic/ F: doc/guides/nics/atlantic.rst @@ -668,6 +763,7 @@ Atomic Rules ARK M: Shepard Siegel <shepard.siegel@atomicrules.com> M: Ed Czeck <ed.czeck@atomicrules.com> M: John Miller <john.miller@atomicrules.com> +S: Supported F: drivers/net/ark/ F: doc/guides/nics/ark.rst F: doc/guides/nics/features/ark.ini @@ -675,6 +771,7 @@ F: doc/guides/nics/features/ark.ini Broadcom bnxt M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Somnath Kotur <somnath.kotur@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm F: drivers/net/bnxt/ F: doc/guides/nics/bnxt.rst @@ -683,6 +780,7 @@ F: doc/guides/nics/features/bnxt.ini Cavium ThunderX nicvf M: Jerin Jacob <jerinj@marvell.com> M: Maciej Czekaj <mczekaj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/thunderx/ F: doc/guides/nics/thunderx.rst @@ -690,6 +788,7 @@ F: doc/guides/nics/features/thunderx.ini Cavium OCTEON TX M: Harman Kalra <hkalra@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/octeontx/ F: drivers/mempool/octeontx/ @@ -699,6 +798,7 @@ F: doc/guides/nics/features/octeontx.ini Chelsio cxgbe M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com> +S: Supported F: drivers/net/cxgbe/ F: doc/guides/nics/cxgbe.rst F: doc/guides/nics/features/cxgbe.ini @@ -706,6 +806,7 @@ F: doc/guides/nics/features/cxgbe.ini Cisco enic M: John Daley <johndale@cisco.com> M: Hyong Youb Kim <hyonkim@cisco.com> +S: Supported F: drivers/net/enic/ F: doc/guides/nics/enic.rst F: doc/guides/nics/features/enic.ini @@ -715,6 +816,7 @@ M: Junfeng Guo <junfeng.guo@intel.com> M: Jeroen de Borst <jeroendb@google.com> M: Rushil Gupta <rushilg@google.com> M: Joshua Washington <joshwash@google.com> +S: Supported F: drivers/net/gve/ F: doc/guides/nics/gve.rst F: doc/guides/nics/features/gve.ini @@ -722,6 +824,7 @@ F: doc/guides/nics/features/gve.ini Hisilicon hns3 M: Dongdong Liu <liudongdong3@huawei.com> M: Yisen Zhuang <yisen.zhuang@huawei.com> +S: Supported F: drivers/net/hns3/ F: doc/guides/nics/hns3.rst F: doc/guides/nics/features/hns3.ini @@ -730,6 +833,7 @@ Huawei hinic M: Ziyang Xuan <xuanziyang2@huawei.com> M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com> M: Guoyang Zhou <zhouguoyang@huawei.com> +S: Supported F: drivers/net/hinic/ F: doc/guides/nics/hinic.rst F: doc/guides/nics/features/hinic.ini @@ -737,6 +841,7 @@ F: doc/guides/nics/features/hinic.ini Intel e1000 M: Simei Su <simei.su@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/e1000/ F: doc/guides/nics/e1000em.rst @@ -747,6 +852,7 @@ F: doc/guides/nics/features/igb*.ini Intel ixgbe M: Qiming Yang <qiming.yang@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ixgbe/ F: doc/guides/nics/ixgbe.rst @@ -756,6 +862,7 @@ F: doc/guides/nics/features/ixgbe*.ini Intel i40e M: Yuying Zhang <Yuying.Zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/i40e/ F: doc/guides/nics/i40e.rst @@ -765,6 +872,7 @@ F: doc/guides/nics/features/i40e*.ini Intel fm10k M: Qi Zhang <qi.z.zhang@intel.com> M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/fm10k/ F: doc/guides/nics/fm10k.rst @@ -773,6 +881,7 @@ F: doc/guides/nics/features/fm10k*.ini Intel iavf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/iavf/ F: drivers/common/iavf/ @@ -781,6 +890,7 @@ F: doc/guides/nics/features/iavf*.ini Intel ice M: Qiming Yang <qiming.yang@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ice/ F: doc/guides/nics/ice.rst @@ -789,6 +899,7 @@ F: doc/guides/nics/features/ice.ini Intel idpf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/idpf/ F: drivers/common/idpf/ @@ -798,6 +909,7 @@ F: doc/guides/nics/features/idpf.ini Intel cpfl - EXPERIMENTAL M: Yuying Zhang <yuying.zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/cpfl/ F: doc/guides/nics/cpfl.rst @@ -806,6 +918,7 @@ F: doc/guides/nics/features/cpfl.ini Intel igc M: Junfeng Guo <junfeng.guo@intel.com> M: Simei Su <simei.su@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/igc/ F: doc/guides/nics/igc.rst @@ -814,6 +927,7 @@ F: doc/guides/nics/features/igc.ini Intel ipn3ke M: Rosen Xu <rosen.xu@intel.com> T: git://dpdk.org/next/dpdk-next-net-intel +S: Supported F: drivers/net/ipn3ke/ F: doc/guides/nics/ipn3ke.rst F: doc/guides/nics/features/ipn3ke.ini @@ -823,6 +937,7 @@ M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> M: Satha Rao <skoteshwar@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/cnxk/ F: drivers/net/cnxk/ @@ -832,6 +947,7 @@ F: doc/guides/platform/cnxk.rst Marvell mvpp2 M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/mvep/ F: drivers/net/mvpp2/ @@ -841,6 +957,7 @@ F: doc/guides/nics/features/mvpp2.ini Marvell mvneta M: Zyta Szpak <zr@semihalf.com> M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/mvneta/ F: doc/guides/nics/mvneta.rst @@ -848,6 +965,7 @@ F: doc/guides/nics/features/mvneta.ini Marvell OCTEON TX EP - endpoint M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/octeon_ep/ F: doc/guides/nics/features/octeon_ep.ini @@ -856,6 +974,7 @@ F: doc/guides/nics/octeon_ep.rst NVIDIA mlx4 M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/net/mlx4/ F: doc/guides/nics/mlx4.rst @@ -866,6 +985,7 @@ M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> M: Ori Kam <orika@nvidia.com> M: Suanming Mou <suanmingm@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/common/mlx5/ F: drivers/net/mlx5/ @@ -875,23 +995,27 @@ F: doc/guides/nics/features/mlx5.ini Microsoft mana M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/mana/ F: doc/guides/nics/mana.rst F: doc/guides/nics/features/mana.ini Microsoft vdev_netvsc - EXPERIMENTAL M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/net/vdev_netvsc/ F: doc/guides/nics/vdev_netvsc.rst Microsoft Hyper-V netvsc M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/netvsc/ F: doc/guides/nics/netvsc.rst F: doc/guides/nics/features/netvsc.ini Netcope nfb M: Martin Spinler <spinler@cesnet.cz> +S: Supported F: drivers/net/nfb/ F: doc/guides/nics/nfb.rst F: doc/guides/nics/features/nfb.ini @@ -899,6 +1023,7 @@ F: doc/guides/nics/features/nfb.ini Netronome nfp M: Chaoyong He <chaoyong.he@corigine.com> M: Niklas Soderlund <niklas.soderlund@corigine.com> +S: Supported F: drivers/net/nfp/ F: doc/guides/nics/nfp.rst F: doc/guides/nics/features/nfp*.ini @@ -906,6 +1031,7 @@ F: doc/guides/nics/features/nfp*.ini NXP dpaa M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa/ F: drivers/net/dpaa/ F: doc/guides/nics/dpaa.rst @@ -914,6 +1040,7 @@ F: doc/guides/nics/features/dpaa.ini NXP dpaa2 M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa2/ F: drivers/net/dpaa2/ F: doc/guides/nics/dpaa2.rst @@ -922,6 +1049,7 @@ F: doc/guides/nics/features/dpaa2.ini NXP enetc M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/net/enetc/ F: doc/guides/nics/enetc.rst F: doc/guides/nics/features/enetc.ini @@ -929,18 +1057,21 @@ F: doc/guides/nics/features/enetc.ini NXP enetfec - EXPERIMENTAL M: Apeksha Gupta <apeksha.gupta@nxp.com> M: Sachin Saxena <sachin.saxena@nxp.com> +S: Supported F: drivers/net/enetfec/ F: doc/guides/nics/enetfec.rst F: doc/guides/nics/features/enetfec.ini NXP pfe M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: doc/guides/nics/pfe.rst F: drivers/net/pfe/ F: doc/guides/nics/features/pfe.ini Marvell QLogic bnx2x M: Julien Aube <julien_dpdk@jaube.fr> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/bnx2x/ F: doc/guides/nics/bnx2x.rst @@ -949,6 +1080,7 @@ F: doc/guides/nics/features/bnx2x*.ini Marvell QLogic qede PMD M: Devendra Singh Rawat <dsinghrawat@marvell.com> M: Alok Prasad <palok@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/qede/ F: doc/guides/nics/qede.rst @@ -956,6 +1088,7 @@ F: doc/guides/nics/features/qede*.ini Solarflare sfc_efx M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/common/sfc_efx/ F: drivers/net/sfc/ F: doc/guides/nics/sfc_efx.rst @@ -963,6 +1096,7 @@ F: doc/guides/nics/features/sfc.ini Wangxun ngbe M: Jiawen Wu <jiawenwu@trustnetic.com> +S: Supported F: drivers/net/ngbe/ F: doc/guides/nics/ngbe.rst F: doc/guides/nics/features/ngbe.ini @@ -970,12 +1104,14 @@ F: doc/guides/nics/features/ngbe.ini Wangxun txgbe M: Jiawen Wu <jiawenwu@trustnetic.com> M: Jian Wang <jianwang@trustnetic.com> +S: Supported F: drivers/net/txgbe/ F: doc/guides/nics/txgbe.rst F: doc/guides/nics/features/txgbe.ini VMware vmxnet3 M: Jochen Behrens <jbehrens@vmware.com> +S: Supported F: drivers/net/vmxnet3/ F: doc/guides/nics/vmxnet3.rst F: doc/guides/nics/features/vmxnet3.ini @@ -983,6 +1119,7 @@ F: doc/guides/nics/features/vmxnet3.ini Vhost-user M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: lib/vhost/ F: doc/guides/prog_guide/vhost_lib.rst @@ -997,6 +1134,7 @@ F: doc/guides/sample_app_ug/vdpa.rst Vhost PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/vhost/ F: doc/guides/nics/vhost.rst @@ -1005,6 +1143,7 @@ F: doc/guides/nics/features/vhost.ini Virtio PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/virtio/ F: doc/guides/nics/virtio.rst @@ -1013,26 +1152,31 @@ F: doc/guides/nics/features/virtio*.ini Wind River AVP M: Steven Webster <steven.webster@windriver.com> M: Matt Peters <matt.peters@windriver.com> +S: Supported F: drivers/net/avp/ F: doc/guides/nics/avp.rst F: doc/guides/nics/features/avp.ini PCAP PMD +S: Orphan F: drivers/net/pcap/ F: doc/guides/nics/pcap_ring.rst F: doc/guides/nics/features/pcap.ini Tap PMD +S: Orphan F: drivers/net/tap/ F: doc/guides/nics/tap.rst F: doc/guides/nics/features/tap.ini KNI PMD +S: Obsolete F: drivers/net/kni/ F: doc/guides/nics/kni.rst Ring PMD M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: drivers/net/ring/ F: doc/guides/nics/pcap_ring.rst F: app/test/test_pmd_ring.c @@ -1040,21 +1184,25 @@ F: app/test/test_pmd_ring_perf.c Null Networking PMD M: Tetsuya Mukawa <mtetsuyah@gmail.com> +S: Supported F: drivers/net/null/ Fail-safe PMD M: Gaetan Rivet <grive@u256.net> +S: Supported F: drivers/net/failsafe/ F: doc/guides/nics/fail_safe.rst F: doc/guides/nics/features/failsafe.ini Softnic PMD M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: drivers/net/softnic/ F: doc/guides/nics/softnic.rst Memif PMD M: Jakub Grajciar <jgrajcia@cisco.com> +S: Supported F: drivers/net/memif/ F: doc/guides/nics/memif.rst F: doc/guides/nics/features/memif.ini @@ -1062,17 +1210,20 @@ F: doc/guides/nics/features/memif.ini Crypto Drivers -------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto F: doc/guides/cryptodevs/features/default.ini AMD CCP Crypto M: Sunil Uttarwar <sunilprakashrao.uttarwar@amd.com> +S: Supported F: drivers/crypto/ccp/ F: doc/guides/cryptodevs/ccp.rst F: doc/guides/cryptodevs/features/ccp.ini ARMv8 Crypto M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: drivers/crypto/armv8/ F: doc/guides/cryptodevs/armv8.rst F: doc/guides/cryptodevs/features/armv8.ini @@ -1081,12 +1232,14 @@ Broadcom FlexSparc M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com> M: Vikas Gupta <vikas.gupta@broadcom.com> +S: Supported F: drivers/crypto/bcmfs/ F: doc/guides/cryptodevs/bcmfs.rst F: doc/guides/cryptodevs/features/bcmfs.ini Cavium OCTEON TX crypto M: Anoob Joseph <anoobj@marvell.com> +S: Supported F: drivers/common/cpt/ F: drivers/crypto/octeontx/ F: doc/guides/cryptodevs/octeontx.rst @@ -1094,17 +1247,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini Crypto Scheduler M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/scheduler/ F: doc/guides/cryptodevs/scheduler.rst HiSilicon UADK crypto M: Zhangfei Gao <zhangfei.gao@linaro.org> +S: Supported F: drivers/crypto/uadk/ F: doc/guides/cryptodevs/uadk.rst F: doc/guides/cryptodevs/features/uadk.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/qat/ F: drivers/common/qat/ F: doc/guides/cryptodevs/qat.rst @@ -1113,6 +1269,7 @@ F: doc/guides/cryptodevs/features/qat.ini IPsec MB M: Kai Ji <kai.ji@intel.com> M: Pablo de Lara <pablo.de.lara.guarch@intel.com> +S: Supported F: drivers/crypto/ipsec_mb/ F: doc/guides/cryptodevs/aesni_gcm.rst F: doc/guides/cryptodevs/aesni_mb.rst @@ -1131,6 +1288,7 @@ Marvell cnxk crypto M: Ankur Dwivedi <adwivedi@marvell.com> M: Anoob Joseph <anoobj@marvell.com> M: Tejasree Kondoj <ktejasree@marvell.com> +S: Supported F: drivers/crypto/cnxk/ F: doc/guides/cryptodevs/cnxk.rst F: doc/guides/cryptodevs/features/cn9k.ini @@ -1139,6 +1297,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini Marvell mvsam M: Michael Shamis <michaelsh@marvell.com> M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/crypto/mvsam/ F: doc/guides/cryptodevs/mvsam.rst F: doc/guides/cryptodevs/features/mvsam.ini @@ -1146,18 +1305,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini Marvell Nitrox M: Nagadheeraj Rottela <rnagadheeraj@marvell.com> M: Srikanth Jampala <jsrikanth@marvell.com> +S: Supported F: drivers/crypto/nitrox/ F: doc/guides/cryptodevs/nitrox.rst F: doc/guides/cryptodevs/features/nitrox.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/crypto/mlx5/ F: doc/guides/cryptodevs/mlx5.rst F: doc/guides/cryptodevs/features/mlx5.ini Null Crypto M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/null/ F: doc/guides/cryptodevs/null.rst F: doc/guides/cryptodevs/features/null.ini @@ -1165,6 +1327,7 @@ F: doc/guides/cryptodevs/features/null.ini NXP CAAM JR M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/caam_jr/ F: doc/guides/cryptodevs/caam_jr.rst F: doc/guides/cryptodevs/features/caam_jr.ini @@ -1172,6 +1335,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini NXP DPAA_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa_sec/ F: doc/guides/cryptodevs/dpaa_sec.rst F: doc/guides/cryptodevs/features/dpaa_sec.ini @@ -1179,18 +1343,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini NXP DPAA2_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa2_sec/ F: doc/guides/cryptodevs/dpaa2_sec.rst F: doc/guides/cryptodevs/features/dpaa2_sec.ini OpenSSL M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/openssl/ F: doc/guides/cryptodevs/openssl.rst F: doc/guides/cryptodevs/features/openssl.ini Virtio M: Jay Zhou <jianjay.zhou@huawei.com> +S: Supported F: drivers/crypto/virtio/ F: doc/guides/cryptodevs/virtio.rst F: doc/guides/cryptodevs/features/virtio.ini @@ -1198,31 +1365,37 @@ F: doc/guides/cryptodevs/features/virtio.ini Compression Drivers ------------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto Cavium OCTEON TX zipvf M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported F: drivers/compress/octeontx/ F: doc/guides/compressdevs/octeontx.rst F: doc/guides/compressdevs/features/octeontx.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/compress/qat/ F: drivers/common/qat/ ISA-L M: Lee Daly <lee.daly@intel.com> +S: Supported F: drivers/compress/isal/ F: doc/guides/compressdevs/isal.rst F: doc/guides/compressdevs/features/isal.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/compress/mlx5/ ZLIB M: Sunila Sahu <ssahu@marvell.com> +S: Supported F: drivers/compress/zlib/ F: doc/guides/compressdevs/zlib.rst F: doc/guides/compressdevs/features/zlib.ini @@ -1234,34 +1407,40 @@ DMAdev Drivers Intel IDXD - EXPERIMENTAL M: Bruce Richardson <bruce.richardson@intel.com> M: Kevin Laatz <kevin.laatz@intel.com> +S: Supported F: drivers/dma/idxd/ F: doc/guides/dmadevs/idxd.rst Intel IOAT M: Bruce Richardson <bruce.richardson@intel.com> M: Conor Walsh <conor.walsh@intel.com> +S: Supported F: drivers/dma/ioat/ F: doc/guides/dmadevs/ioat.rst HiSilicon DMA M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: drivers/dma/hisilicon/ F: doc/guides/dmadevs/hisilicon.rst Marvell CNXK DPI DMA M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported F: drivers/dma/cnxk/ F: doc/guides/dmadevs/cnxk.rst NXP DPAA DMA M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/dma/dpaa/ F: doc/guides/dmadevs/dpaa.rst NXP DPAA2 QDMA M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/dma/dpaa2/ F: doc/guides/dmadevs/dpaa2.rst @@ -1271,12 +1450,14 @@ RegEx Drivers Marvell OCTEON CN9K regex M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/regex/cn9k/ F: doc/guides/regexdevs/cn9k.rst F: doc/guides/regexdevs/features/cn9k.ini NVIDIA mlx5 M: Ori Kam <orika@nvidia.com> +S: Supported F: drivers/regex/mlx5/ F: doc/guides/regexdevs/mlx5.rst F: doc/guides/regexdevs/features/mlx5.ini @@ -1287,6 +1468,7 @@ MLdev Drivers Marvell ML CNXK M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: drivers/common/cnxk/hw/ml.h F: drivers/common/cnxk/roc_ml* F: drivers/ml/cnxk/ @@ -1299,6 +1481,7 @@ T: git://dpdk.org/next/dpdk-next-virtio Intel ifc M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported F: drivers/vdpa/ifc/ F: doc/guides/vdpadevs/ifc.rst F: doc/guides/vdpadevs/features/ifcvf.ini @@ -1306,12 +1489,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini NVIDIA mlx5 vDPA M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported F: drivers/vdpa/mlx5/ F: doc/guides/vdpadevs/mlx5.rst F: doc/guides/vdpadevs/features/mlx5.ini Xilinx sfc vDPA M: Vijay Kumar Srivastava <vsrivast@xilinx.com> +S: Supported F: drivers/vdpa/sfc/ F: doc/guides/vdpadevs/sfc.rst F: doc/guides/vdpadevs/features/sfc.ini @@ -1320,42 +1505,50 @@ F: doc/guides/vdpadevs/features/sfc.ini Eventdev Drivers ---------------- M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Cavium OCTEON TX ssovf M: Jerin Jacob <jerinj@marvell.com> +S: Supported F: drivers/event/octeontx/ F: doc/guides/eventdevs/octeontx.rst Cavium OCTEON TX timvf M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: drivers/event/octeontx/timvf_* Intel DLB2 M: Timothy McDaniel <timothy.mcdaniel@intel.com> +S: Supported F: drivers/event/dlb2/ F: doc/guides/eventdevs/dlb2.rst Marvell cnxk M: Pavan Nikhilesh <pbhagavatula@marvell.com> M: Shijith Thotton <sthotton@marvell.com> +S: Supported F: drivers/event/cnxk/ F: doc/guides/eventdevs/cnxk.rst NXP DPAA eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa/ F: doc/guides/eventdevs/dpaa.rst NXP DPAA2 eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa2/ F: doc/guides/eventdevs/dpaa2.rst Software Eventdev PMD M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: drivers/event/sw/ F: doc/guides/eventdevs/sw.rst F: examples/eventdev_pipeline/ @@ -1363,11 +1556,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst Distributed Software Eventdev PMD M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: drivers/event/dsw/ F: doc/guides/eventdevs/dsw.rst Software OPDL Eventdev PMD M: Liang Ma <liangma@liangbit.com> +S: Supported M: Peter Mccarthy <peter.mccarthy@intel.com> F: drivers/event/opdl/ F: doc/guides/eventdevs/opdl.rst @@ -1378,6 +1573,7 @@ Baseband Drivers Intel baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/turbo_sw/ F: doc/guides/bbdevs/turbo_sw.rst @@ -1397,6 +1593,7 @@ F: doc/guides/bbdevs/features/vrb1.ini Null baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/null/ F: doc/guides/bbdevs/null.rst @@ -1405,6 +1602,7 @@ F: doc/guides/bbdevs/features/null.ini NXP LA12xx M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/la12xx/ F: doc/guides/bbdevs/la12xx.rst @@ -1416,6 +1614,7 @@ GPU Drivers NVIDIA CUDA M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: drivers/gpu/cuda/ F: doc/guides/gpus/cuda.rst @@ -1426,6 +1625,7 @@ Rawdev Drivers Intel FPGA M: Rosen Xu <rosen.xu@intel.com> M: Tianfei zhang <tianfei.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/raw/ifpga/ F: doc/guides/rawdevs/ifpga.rst @@ -1433,18 +1633,21 @@ F: doc/guides/rawdevs/ifpga.rst Marvell CNXK BPHY M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_bphy.rst F: drivers/raw/cnxk_bphy/ Marvell CNXK GPIO M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_gpio.rst F: drivers/raw/cnxk_gpio/ NTB M: Jingjing Wu <jingjing.wu@intel.com> M: Junfeng Guo <junfeng.guo@intel.com> +S: Supported F: drivers/raw/ntb/ F: doc/guides/rawdevs/ntb.rst F: examples/ntb/ @@ -1452,6 +1655,7 @@ F: doc/guides/sample_app_ug/ntb.rst NXP DPAA2 CMDIF M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: drivers/raw/dpaa2_cmdif/ F: doc/guides/rawdevs/dpaa2_cmdif.rst @@ -1461,12 +1665,14 @@ Packet processing Network headers M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/net/ F: app/test/test_cksum.c F: app/test/test_cksum_perf.c Packet CRC M: Jasvinder Singh <jasvinder.singh@intel.com> +S: Supported F: lib/net/net_crc.h F: lib/net/rte_net_crc* F: lib/net/net_crc_avx512.c @@ -1475,6 +1681,7 @@ F: app/test/test_crc.c IP fragmentation & reassembly M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ip_frag/ F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst F: app/test/test_ipfrag.c @@ -1486,16 +1693,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst Generic Receive Offload - EXPERIMENTAL M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gro/ F: doc/guides/prog_guide/generic_receive_offload_lib.rst Generic Segmentation Offload M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gso/ F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst IPsec M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/ipsec/ F: app/test/test_ipsec* @@ -1506,12 +1716,14 @@ F: app/test-sad/ PDCP - EXPERIMENTAL M: Anoob Joseph <anoobj@marvell.com> M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/pdcp/ F: doc/guides/prog_guide/pdcp_lib.rst F: app/test/test_pdcp* Flow Classify - EXPERIMENTAL - UNMAINTAINED +S: Orphan F: lib/flow_classify/ F: app/test/test_flow_classify* F: doc/guides/prog_guide/flow_classify_lib.rst @@ -1520,6 +1732,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst Distributor M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/distributor/ F: doc/guides/prog_guide/packet_distrib_lib.rst F: app/test/test_distributor* @@ -1528,6 +1741,7 @@ F: doc/guides/sample_app_ug/dist_app.rst Reorder M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported F: lib/reorder/ F: doc/guides/prog_guide/reorder_lib.rst F: app/test/test_reorder* @@ -1536,6 +1750,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst Hierarchical scheduler M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/sched/ F: doc/guides/prog_guide/qos_framework.rst F: app/test/test_pie.c @@ -1547,6 +1762,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst Packet capture M: Reshma Pattan <reshma.pattan@intel.com> M: Stephen Hemminger <stephen@networkplumber.org> +S: Maintained F: lib/pdump/ F: doc/guides/prog_guide/pdump_lib.rst F: app/test/test_pdump.* @@ -1562,6 +1778,7 @@ F: doc/guides/tools/dumpcap.rst Packet Framework ---------------- M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Obsolete F: lib/pipeline/ F: lib/port/ F: lib/table/ @@ -1579,6 +1796,7 @@ Algorithms ACL M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/acl/ F: doc/guides/prog_guide/packet_classif_access_ctrl.rst F: app/test-acl/ @@ -1587,6 +1805,7 @@ F: app/test/test_acl.* EFD M: Byron Marohn <byron.marohn@intel.com> M: Yipeng Wang <yipeng1.wang@intel.com> +S: Supported F: lib/efd/ F: doc/guides/prog_guide/efd_lib.rst F: app/test/test_efd* @@ -1598,6 +1817,7 @@ M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/hash/ F: doc/guides/prog_guide/hash_lib.rst F: doc/guides/prog_guide/toeplitz_hash_lib.rst @@ -1607,6 +1827,7 @@ F: app/test/test_func_reentrancy.c LPM M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/lpm/ F: doc/guides/prog_guide/lpm* F: app/test/test_lpm* @@ -1616,12 +1837,14 @@ F: app/test/test_xmmt_ops.h Membership - EXPERIMENTAL M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> +S: Supported F: lib/member/ F: doc/guides/prog_guide/member_lib.rst F: app/test/test_member* RIB/FIB M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/rib/ F: app/test/test_rib* F: lib/fib/ @@ -1630,6 +1853,7 @@ F: app/test-fib/ Traffic metering M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/meter/ F: doc/guides/sample_app_ug/qos_scheduler.rst F: app/test/test_meter.c @@ -1642,12 +1866,14 @@ Other libraries Configuration file M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/cfgfile/ F: app/test/test_cfgfile.c F: app/test/test_cfgfiles/ Interactive command line M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/cmdline/ F: app/test-cmdline/ F: app/test/test_cmdline* @@ -1656,11 +1882,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst Key/Value parsing M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/kvargs/ F: app/test/test_kvargs.c RCU M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/rcu/ F: app/test/test_rcu* F: doc/guides/prog_guide/rcu_lib.rst @@ -1668,11 +1896,13 @@ F: doc/guides/prog_guide/rcu_lib.rst PCI M: Chenbo Xia <chenbo.xia@intel.com> M: Gaetan Rivet <grive@u256.net> +S: Supported F: lib/pci/ Power management M: Anatoly Burakov <anatoly.burakov@intel.com> M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/power/ F: doc/guides/prog_guide/power_man.rst F: app/test/test_power* @@ -1683,6 +1913,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst Timers M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported F: lib/timer/ F: doc/guides/prog_guide/timer_lib.rst F: app/test/test_timer* @@ -1690,25 +1921,30 @@ F: examples/timer/ F: doc/guides/sample_app_ug/timer.rst Job statistics +S: Orphan F: lib/jobstats/ F: examples/l2fwd-jobstats/ F: doc/guides/sample_app_ug/l2_forward_job_stats.rst Metrics +S: Orphan F: lib/metrics/ F: app/test/test_metrics.c Bit-rate statistics +S: Orphan F: lib/bitratestats/ F: app/test/test_bitratestats.c Latency statistics M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: lib/latencystats/ F: app/test/test_latencystats.c Telemetry M: Ciara Power <ciara.power@intel.com> +S: Supported F: lib/telemetry/ F: app/test/test_telemetry* F: usertools/dpdk-telemetry* @@ -1716,6 +1952,7 @@ F: doc/guides/howto/telemetry.rst BPF M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/bpf/ F: examples/bpf/ F: app/test/test_bpf.c @@ -1727,6 +1964,7 @@ M: Jerin Jacob <jerinj@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Zhirun Yan <zhirun.yan@intel.com> +S: Supported F: lib/graph/ F: doc/guides/prog_guide/graph_lib.rst F: app/test/test_graph* @@ -1736,6 +1974,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst Nodes - EXPERIMENTAL M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: lib/node/ @@ -1743,6 +1982,7 @@ Test Applications ----------------- Unit tests framework +S: Maintained F: app/test/commands.c F: app/test/has_hugepage.py F: app/test/packet_burst_generator.c @@ -1758,45 +1998,53 @@ F: app/test/virtual_pmd.h Sample packet helper functions for unit test M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/test/sample_packet_forward.c F: app/test/sample_packet_forward.h Networking drivers testing tool M: Aman Singh <aman.deep.singh@intel.com> M: Yuying Zhang <yuying.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/ F: doc/guides/testpmd_app_ug/ DMA device performance tool M: Cheng Jiang <cheng1.jiang@intel.com> +S: Supported F: app/test-dma-perf/ F: doc/guides/tools/dmaperf.rst Flow performance tool M: Wisam Jaddo <wisamm@nvidia.com> +S: Supported F: app/test-flow-perf/ F: doc/guides/tools/flow-perf.rst Security performance tool M: Anoob Joseph <anoobj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-security-perf/ F: doc/guides/tools/securityperf.rst Compression performance test application T: git://dpdk.org/next/dpdk-next-crypto +S: Orphan F: app/test-compress-perf/ F: doc/guides/tools/comp_perf.rst Crypto performance test application M: Ciara Power <ciara.power@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-crypto-perf/ F: doc/guides/tools/cryptoperf.rst Eventdev test application M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: app/test-eventdev/ F: doc/guides/tools/testeventdev.rst @@ -1806,12 +2054,14 @@ F: app/test/test_event_ring.c Procinfo tool M: Maryam Tahhan <maryam.tahhan@intel.com> M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/proc-info/ F: doc/guides/tools/proc_info.rst DTS M: Lijuan Tu <lijuan.tu@intel.com> M: Juraj Linkeš <juraj.linkes@pantheon.tech> +S: Supported F: dts/ F: devtools/dts-check-format.sh F: doc/guides/tools/dts.rst @@ -1821,77 +2071,92 @@ Other Example Applications -------------------------- Ethtool example +S: Orphan F: examples/ethtool/ F: doc/guides/sample_app_ug/ethtool.rst FIPS validation example M: Brian Dooley <brian.dooley@intel.com> M: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com> +S: Supported F: examples/fips_validation/ F: doc/guides/sample_app_ug/fips_validation.rst Flow filtering example M: Ori Kam <orika@nvidia.com> +S: Supported F: examples/flow_filtering/ F: doc/guides/sample_app_ug/flow_filtering.rst Helloworld example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/helloworld/ F: doc/guides/sample_app_ug/hello_world.rst IPsec security gateway example M: Radu Nicolau <radu.nicolau@intel.com> M: Akhil Goyal <gakhil@marvell.com> +S: Supported F: examples/ipsec-secgw/ F: doc/guides/sample_app_ug/ipsec_secgw.rst IPv4 multicast example +S: Orphan F: examples/ipv4_multicast/ F: doc/guides/sample_app_ug/ipv4_multicast.rst L2 forwarding example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/l2fwd/ F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst L2 forwarding with cache allocation example M: Tomasz Kantecki <tomasz.kantecki@intel.com> +S: Supported F: doc/guides/sample_app_ug/l2_forward_cat.rst F: examples/l2fwd-cat/ L2 forwarding with eventdev example M: Sunil Kumar Kori <skori@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: examples/l2fwd-event/ F: doc/guides/sample_app_ug/l2_forward_event.rst L3 forwarding example +S: Maintained F: examples/l3fwd/ F: doc/guides/sample_app_ug/l3_forward.rst Link status interrupt example +S: Maintained F: examples/link_status_interrupt/ F: doc/guides/sample_app_ug/link_status_intr.rst PTP client example M: Kirill Rybalchenko <kirill.rybalchenko@intel.com> +S: Supported F: examples/ptpclient/ Rx/Tx callbacks example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/rxtx_callbacks/ F: doc/guides/sample_app_ug/rxtx_callbacks.rst Skeleton example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/skeleton/ F: doc/guides/sample_app_ug/skeleton.rst VMDq examples +S: Orphan F: examples/vmdq/ F: doc/guides/sample_app_ug/vmdq_forwarding.rst F: examples/vmdq_dcb/ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v3] MAINTAINERS: add status information 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger 2023-07-19 16:07 ` [PATCH v2] " Stephen Hemminger @ 2023-07-20 17:21 ` Stephen Hemminger 2023-07-20 17:45 ` [PATCH v2 ] tap: fix build of TAP BPF program Stephen Hemminger ` (5 subsequent siblings) 7 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-20 17:21 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- v3 - add back Makefile mark vdev_netvsc as Odd Fixes MAINTAINERS | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 18bc05fccd0d..42cc29e6c475 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -17,6 +17,16 @@ Descriptions of section entries: X: Files and directories exclusion, same rules as F: K: Keyword regex pattern to match content. One regex pattern per line. Multiple K: lines acceptable. + S: *Status*, one of the following: + Supported: Someone is actually paid to look after this. + Maintained: Someone actually looks after it. + Odd Fixes: It has a maintainer but they don't have time to do + much other than throw the odd patch in. See below.. + Orphan: No current maintainer [but maybe you could take the + role as you write your new code]. + Obsolete: Old code. Something tagged obsolete generally means + it has been replaced by a better system and you + should be using that. General Project Administration @@ -25,44 +35,54 @@ General Project Administration Main Branch M: Thomas Monjalon <thomas@monjalon.net> M: David Marchand <david.marchand@redhat.com> +S: Supported T: git://dpdk.org/dpdk Next-net Tree M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net Next-net-brcm Tree M: Ajit Khaparde <ajit.khaparde@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm Next-net-intel Tree M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel Next-net-mrvl Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl Next-net-mlx Tree M: Raslan Darawsheh <rasland@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx Next-virtio Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio Next-crypto Tree M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto Next-eventdev Tree M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Next-baseband Tree M: Maxime Coquelin <maxime.coquelin@redhat.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband Stable Branches @@ -70,17 +90,21 @@ M: Luca Boccassi <bluca@debian.org> M: Kevin Traynor <ktraynor@redhat.com> M: Christian Ehrhardt <christian.ehrhardt@canonical.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported T: git://dpdk.org/dpdk-stable Security Issues M: maintainers@dpdk.org +S: Supported Documentation (with overlaps) F: README F: doc/ +S: Supported Developers and Maintainers Tools M: Thomas Monjalon <thomas@monjalon.net> +S: Supported F: MAINTAINERS F: devtools/build-dict.sh F: devtools/check-abi.sh @@ -110,6 +134,7 @@ F: .mailmap Build System M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: Makefile F: meson.build F: meson_options.txt @@ -130,11 +155,13 @@ F: devtools/check-meson.py Public CI M: Aaron Conole <aconole@redhat.com> M: Michael Santana <maicolgabriel@hotmail.com> +S: Supported F: .github/workflows/build.yml F: .ci/ Driver information M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Maintained F: buildtools/coff.py F: buildtools/gen-pmdinfo-cfile.py F: buildtools/pmdinfogen.py @@ -147,6 +174,7 @@ Environment Abstraction Layer T: git://dpdk.org/dpdk EAL API and common code +S: Supported F: lib/eal/common/ F: lib/eal/unix/ F: lib/eal/include/ @@ -180,6 +208,7 @@ F: app/test/test_version.c Trace - EXPERIMENTAL M: Jerin Jacob <jerinj@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> +S: Supported F: lib/eal/include/rte_trace*.h F: lib/eal/common/eal_common_trace*.c F: lib/eal/common/eal_trace.h @@ -188,6 +217,7 @@ F: app/test/test_trace* Memory Allocation M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/include/rte_fbarray.h F: lib/eal/include/rte_mem* F: lib/eal/include/rte_malloc.h @@ -209,11 +239,13 @@ F: app/test/test_memzone.c Interrupt Subsystem M: Harman Kalra <hkalra@marvell.com> +S: Supported F: lib/eal/include/rte_epoll.h F: lib/eal/*/*interrupts.* F: app/test/test_interrupts.c Keep alive +S: Orphan F: lib/eal/include/rte_keepalive.h F: lib/eal/common/rte_keepalive.c F: examples/l2fwd-keepalive/ @@ -221,6 +253,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst Secondary process M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Maintained K: RTE_PROC_ F: lib/eal/common/eal_common_proc.c F: doc/guides/prog_guide/multi_proc_support.rst @@ -230,6 +263,7 @@ F: doc/guides/sample_app_ug/multi_process.rst Service Cores M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: lib/eal/include/rte_service.h F: lib/eal/include/rte_service_component.h F: lib/eal/common/rte_service.c @@ -240,44 +274,52 @@ F: doc/guides/sample_app_ug/service_cores.rst Bitops M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_bitops.h F: app/test/test_bitops.c Bitmap M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/eal/include/rte_bitmap.h F: app/test/test_bitmap.c MCSlock M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/eal/include/rte_mcslock.h F: app/test/test_mcslock.c Sequence Lock M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_seqcount.h F: lib/eal/include/rte_seqlock.h F: app/test/test_seqlock.c Ticketlock M: Joyce Kong <joyce.kong@arm.com> +S: Supported F: lib/eal/include/rte_ticketlock.h F: app/test/test_ticketlock.c Pseudo-random Number Generation M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: lib/eal/include/rte_random.h F: lib/eal/common/rte_random.c F: app/test/test_rand_perf.c ARM v7 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: lib/eal/arm/ X: lib/eal/arm/include/*_64.h ARM v8 M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: config/arm/ F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst F: lib/eal/arm/ @@ -291,12 +333,14 @@ F: examples/common/neon/ LoongArch M: Min Zhou <zhoumin@loongson.cn> +S: Supported F: config/loongarch/ F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst F: lib/eal/loongarch/ IBM POWER (alpha) M: David Christensen <drc@linux.vnet.ibm.com> +S: Supported F: config/ppc/ F: lib/eal/ppc/ F: lib/*/*_altivec* @@ -307,6 +351,7 @@ F: examples/common/altivec/ RISC-V M: Stanislaw Kardach <kda@semihalf.com> +S: Supported F: config/riscv/ F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst F: lib/eal/riscv/ @@ -314,6 +359,7 @@ F: lib/eal/riscv/ Intel x86 M: Bruce Richardson <bruce.richardson@intel.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: config/x86/ F: doc/guides/linux_gsg/nic_perf_intel_platform.rst F: buildtools/binutils-avx512-check.py @@ -330,28 +376,34 @@ F: examples/*/*_avx* F: examples/common/sse/ Linux EAL (with overlaps) +S: Supported F: lib/eal/linux/ F: doc/guides/linux_gsg/ Linux UIO +S: Supported F: drivers/bus/pci/linux/*uio* Linux VFIO M: Anatoly Burakov <anatoly.burakov@intel.com> +S: Supported F: lib/eal/linux/*vfio* F: drivers/bus/pci/linux/*vfio* FreeBSD EAL (with overlaps) M: Bruce Richardson <bruce.richardson@intel.com> +S: Odd Fixes F: lib/eal/freebsd/ F: doc/guides/freebsd_gsg/ FreeBSD contigmem M: Bruce Richardson <bruce.richardson@intel.com> +S: Oddd Fixes F: kernel/freebsd/contigmem/ FreeBSD UIO M: Bruce Richardson <bruce.richardson@intel.com> +S: Odd Fixes F: kernel/freebsd/nic_uio/ Windows support @@ -359,12 +411,14 @@ M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> M: Narcisa Ana Maria Vasile <navasile@linux.microsoft.com> M: Dmitry Malloy <dmitrym@microsoft.com> M: Pallavi Kadam <pallavi.kadam@intel.com> +S: Supported F: lib/eal/windows/ F: buildtools/map_to_win.py F: doc/guides/windows_gsg/ Windows memory allocation M: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> +S: Supported F: lib/eal/windows/eal_hugepages.c F: lib/eal/windows/eal_mem* @@ -372,10 +426,12 @@ F: lib/eal/windows/eal_mem* Core Libraries -------------- T: git://dpdk.org/dpdk +S: Maintained Memory pool M: Olivier Matz <olivier.matz@6wind.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: lib/mempool/ F: drivers/mempool/ring/ F: doc/guides/prog_guide/mempool_lib.rst @@ -385,6 +441,7 @@ F: app/test/test_func_reentrancy.c Ring queue M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ring/ F: doc/guides/prog_guide/ring_lib.rst F: app/test/test_ring* @@ -392,6 +449,7 @@ F: app/test/test_func_reentrancy.c Stack M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/stack/ F: drivers/mempool/stack/ F: app/test/test_stack* @@ -399,6 +457,7 @@ F: doc/guides/prog_guide/stack_lib.rst Packet buffer M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/mbuf/ F: doc/guides/prog_guide/mbuf_lib.rst F: app/test/test_mbuf.c @@ -407,6 +466,7 @@ Ethernet API M: Thomas Monjalon <thomas@monjalon.net> M: Ferruh Yigit <ferruh.yigit@amd.com> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/ F: app/test/test_ethdev* @@ -415,6 +475,7 @@ F: doc/guides/prog_guide/switch_representation.rst Flow API M: Ori Kam <orika@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/cmdline_flow.c F: doc/guides/prog_guide/rte_flow.rst @@ -422,18 +483,21 @@ F: lib/ethdev/rte_flow* Traffic Management API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_tm* F: app/test-pmd/cmdline_tm.* Traffic Metering and Policing API - EXPERIMENTAL M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: lib/ethdev/rte_mtr* F: app/test-pmd/cmdline_mtr.* Baseband API M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: lib/bbdev/ F: doc/guides/prog_guide/bbdev.rst @@ -446,6 +510,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst Crypto API M: Akhil Goyal <gakhil@marvell.com> M: Fan Zhang <fanzhang.oss@gmail.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/cryptodev/ F: app/test/test_cryptodev* @@ -453,6 +518,7 @@ F: examples/l2fwd-crypto/ Security API M: Akhil Goyal <gakhil@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/security/ F: doc/guides/prog_guide/rte_security.rst @@ -461,6 +527,7 @@ F: app/test/test_security* Compression API - EXPERIMENTAL M: Fan Zhang <fanzhang.oss@gmail.com> M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/compressdev/ F: drivers/compress/ @@ -470,6 +537,7 @@ F: doc/guides/compressdevs/features/default.ini RegEx API - EXPERIMENTAL M: Ori Kam <orika@nvidia.com> +S: Supported F: lib/regexdev/ F: app/test-regex/ F: doc/guides/prog_guide/regexdev.rst @@ -477,6 +545,7 @@ F: doc/guides/regexdevs/features/default.ini Machine Learning device API - EXPERIMENTAL M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: lib/mldev/ F: doc/guides/prog_guide/mldev.rst F: app/test-mldev/ @@ -484,6 +553,7 @@ F: doc/guides/tools/testmldev.rst DMA device API - EXPERIMENTAL M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: lib/dmadev/ F: drivers/dma/skeleton/ F: app/test/test_dmadev* @@ -495,6 +565,7 @@ F: doc/guides/sample_app_ug/dma.rst General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: lib/gpudev/ F: doc/guides/prog_guide/gpudev.rst F: doc/guides/gpus/features/default.ini @@ -502,6 +573,7 @@ F: app/test-gpudev/ Eventdev API M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/ F: drivers/event/skeleton/ @@ -510,6 +582,7 @@ F: examples/l3fwd/l3fwd_event* Eventdev Ethdev Rx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_rx_adapter* F: app/test/test_event_eth_rx_adapter.c @@ -517,6 +590,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst Eventdev Ethdev Tx Adapter API M: Naga Harish K S V <s.v.naga.harish.k@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*eth_tx_adapter* F: app/test/test_event_eth_tx_adapter.c @@ -524,6 +598,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst Eventdev Timer Adapter API M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*timer_adapter* F: app/test/test_event_timer_adapter.c @@ -531,6 +606,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst Eventdev Crypto Adapter API M: Abhinandan Gujjar <abhinandan.gujjar@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: lib/eventdev/*crypto_adapter* F: app/test/test_event_crypto_adapter.c @@ -539,6 +615,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst Raw device API M: Sachin Saxena <sachin.saxena@oss.nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: lib/rawdev/ F: drivers/raw/skeleton/ F: app/test/test_rawdev.c @@ -551,11 +628,13 @@ Memory Pool Drivers Bucket memory pool M: Artem V. Andreev <artem.andreev@oktetlabs.ru> M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/mempool/bucket/ Marvell cnxk M: Ashwin Sekhar T K <asekhar@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/mempool/cnxk/ F: doc/guides/mempool/cnxk.rst @@ -567,20 +646,24 @@ Bus Drivers AMD CDX bus M: Nipun Gupta <nipun.gupta@amd.com> M: Nikhil Agarwal <nikhil.agarwal@amd.com> +S: Supported F: drivers/bus/cdx/ Auxiliary bus driver - EXPERIMENTAL M: Parav Pandit <parav@nvidia.com> M: Xueming Li <xuemingl@nvidia.com> +S: Supported F: drivers/bus/auxiliary/ Intel FPGA bus M: Rosen Xu <rosen.xu@intel.com> +S: Supported F: drivers/bus/ifpga/ NXP buses M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/common/dpaax/ F: drivers/bus/dpaa/ F: drivers/bus/fslmc/ @@ -588,36 +671,43 @@ F: drivers/bus/fslmc/ PCI bus driver M: Chenbo Xia <chenbo.xia@intel.com> M: Nipun Gupta <nipun.gupta@amd.com> +S: Supported F: drivers/bus/pci/ Platform bus driver M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: drivers/bus/platform/ VDEV bus driver +S: Maintained F: drivers/bus/vdev/ F: app/test/test_vdev.c VMBUS bus driver M: Long Li <longli@microsoft.com> +S: Supported F: drivers/bus/vmbus/ Networking Drivers ------------------ M: Ferruh Yigit <ferruh.yigit@amd.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: doc/guides/nics/features/default.ini Link bonding M: Chas Williams <chas3@att.com> M: Min Hu (Connor) <humin29@huawei.com> +S: Supported F: drivers/net/bonding/ F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst F: app/test/test_link_bonding* F: examples/bond/ Linux KNI +S: Obsolete F: kernel/linux/kni/ F: lib/kni/ F: doc/guides/prog_guide/kernel_nic_interface.rst @@ -625,12 +715,14 @@ F: app/test/test_kni.c Linux AF_PACKET M: John W. Linville <linville@tuxdriver.com> +S: Odd Fixes F: drivers/net/af_packet/ F: doc/guides/nics/features/afpacket.ini Linux AF_XDP M: Ciara Loftus <ciara.loftus@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported F: drivers/net/af_xdp/ F: doc/guides/nics/af_xdp.rst F: doc/guides/nics/features/af_xdp.ini @@ -641,24 +733,28 @@ M: Shai Brandes <shaibran@amazon.com> M: Evgeny Schemeilin <evgenys@amazon.com> M: Igor Chauskin <igorch@amazon.com> M: Ron Beider <rbeider@amazon.com> +S: Supported F: drivers/net/ena/ F: doc/guides/nics/ena.rst F: doc/guides/nics/features/ena.ini AMD axgbe M: Chandubabu Namburu <chandu@amd.com> +S: Supported F: drivers/net/axgbe/ F: doc/guides/nics/axgbe.rst F: doc/guides/nics/features/axgbe.ini AMD Pensando ionic M: Andrew Boyer <andrew.boyer@amd.com> +S: Supported F: drivers/net/ionic/ F: doc/guides/nics/ionic.rst F: doc/guides/nics/features/ionic.ini Marvell/Aquantia atlantic M: Igor Russkikh <irusskikh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/atlantic/ F: doc/guides/nics/atlantic.rst @@ -668,6 +764,7 @@ Atomic Rules ARK M: Shepard Siegel <shepard.siegel@atomicrules.com> M: Ed Czeck <ed.czeck@atomicrules.com> M: John Miller <john.miller@atomicrules.com> +S: Supported F: drivers/net/ark/ F: doc/guides/nics/ark.rst F: doc/guides/nics/features/ark.ini @@ -675,6 +772,7 @@ F: doc/guides/nics/features/ark.ini Broadcom bnxt M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Somnath Kotur <somnath.kotur@broadcom.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-brcm F: drivers/net/bnxt/ F: doc/guides/nics/bnxt.rst @@ -683,6 +781,7 @@ F: doc/guides/nics/features/bnxt.ini Cavium ThunderX nicvf M: Jerin Jacob <jerinj@marvell.com> M: Maciej Czekaj <mczekaj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/thunderx/ F: doc/guides/nics/thunderx.rst @@ -690,6 +789,7 @@ F: doc/guides/nics/features/thunderx.ini Cavium OCTEON TX M: Harman Kalra <hkalra@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/octeontx/ F: drivers/mempool/octeontx/ @@ -699,6 +799,7 @@ F: doc/guides/nics/features/octeontx.ini Chelsio cxgbe M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com> +S: Supported F: drivers/net/cxgbe/ F: doc/guides/nics/cxgbe.rst F: doc/guides/nics/features/cxgbe.ini @@ -706,6 +807,7 @@ F: doc/guides/nics/features/cxgbe.ini Cisco enic M: John Daley <johndale@cisco.com> M: Hyong Youb Kim <hyonkim@cisco.com> +S: Supported F: drivers/net/enic/ F: doc/guides/nics/enic.rst F: doc/guides/nics/features/enic.ini @@ -715,6 +817,7 @@ M: Junfeng Guo <junfeng.guo@intel.com> M: Jeroen de Borst <jeroendb@google.com> M: Rushil Gupta <rushilg@google.com> M: Joshua Washington <joshwash@google.com> +S: Supported F: drivers/net/gve/ F: doc/guides/nics/gve.rst F: doc/guides/nics/features/gve.ini @@ -722,6 +825,7 @@ F: doc/guides/nics/features/gve.ini Hisilicon hns3 M: Dongdong Liu <liudongdong3@huawei.com> M: Yisen Zhuang <yisen.zhuang@huawei.com> +S: Supported F: drivers/net/hns3/ F: doc/guides/nics/hns3.rst F: doc/guides/nics/features/hns3.ini @@ -730,6 +834,7 @@ Huawei hinic M: Ziyang Xuan <xuanziyang2@huawei.com> M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com> M: Guoyang Zhou <zhouguoyang@huawei.com> +S: Supported F: drivers/net/hinic/ F: doc/guides/nics/hinic.rst F: doc/guides/nics/features/hinic.ini @@ -737,6 +842,7 @@ F: doc/guides/nics/features/hinic.ini Intel e1000 M: Simei Su <simei.su@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/e1000/ F: doc/guides/nics/e1000em.rst @@ -747,6 +853,7 @@ F: doc/guides/nics/features/igb*.ini Intel ixgbe M: Qiming Yang <qiming.yang@intel.com> M: Wenjun Wu <wenjun1.wu@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ixgbe/ F: doc/guides/nics/ixgbe.rst @@ -756,6 +863,7 @@ F: doc/guides/nics/features/ixgbe*.ini Intel i40e M: Yuying Zhang <Yuying.Zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/i40e/ F: doc/guides/nics/i40e.rst @@ -765,6 +873,7 @@ F: doc/guides/nics/features/i40e*.ini Intel fm10k M: Qi Zhang <qi.z.zhang@intel.com> M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/fm10k/ F: doc/guides/nics/fm10k.rst @@ -773,6 +882,7 @@ F: doc/guides/nics/features/fm10k*.ini Intel iavf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/iavf/ F: drivers/common/iavf/ @@ -781,6 +891,7 @@ F: doc/guides/nics/features/iavf*.ini Intel ice M: Qiming Yang <qiming.yang@intel.com> M: Qi Zhang <qi.z.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/ice/ F: doc/guides/nics/ice.rst @@ -789,6 +900,7 @@ F: doc/guides/nics/features/ice.ini Intel idpf M: Jingjing Wu <jingjing.wu@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/idpf/ F: drivers/common/idpf/ @@ -798,6 +910,7 @@ F: doc/guides/nics/features/idpf.ini Intel cpfl - EXPERIMENTAL M: Yuying Zhang <yuying.zhang@intel.com> M: Beilei Xing <beilei.xing@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/cpfl/ F: doc/guides/nics/cpfl.rst @@ -806,6 +919,7 @@ F: doc/guides/nics/features/cpfl.ini Intel igc M: Junfeng Guo <junfeng.guo@intel.com> M: Simei Su <simei.su@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/net/igc/ F: doc/guides/nics/igc.rst @@ -814,6 +928,7 @@ F: doc/guides/nics/features/igc.ini Intel ipn3ke M: Rosen Xu <rosen.xu@intel.com> T: git://dpdk.org/next/dpdk-next-net-intel +S: Supported F: drivers/net/ipn3ke/ F: doc/guides/nics/ipn3ke.rst F: doc/guides/nics/features/ipn3ke.ini @@ -823,6 +938,7 @@ M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Sunil Kumar Kori <skori@marvell.com> M: Satha Rao <skoteshwar@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/cnxk/ F: drivers/net/cnxk/ @@ -832,6 +948,7 @@ F: doc/guides/platform/cnxk.rst Marvell mvpp2 M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/common/mvep/ F: drivers/net/mvpp2/ @@ -841,6 +958,7 @@ F: doc/guides/nics/features/mvpp2.ini Marvell mvneta M: Zyta Szpak <zr@semihalf.com> M: Liron Himi <lironh@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/mvneta/ F: doc/guides/nics/mvneta.rst @@ -848,6 +966,7 @@ F: doc/guides/nics/features/mvneta.ini Marvell OCTEON TX EP - endpoint M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/octeon_ep/ F: doc/guides/nics/features/octeon_ep.ini @@ -856,6 +975,7 @@ F: doc/guides/nics/octeon_ep.rst NVIDIA mlx4 M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/net/mlx4/ F: doc/guides/nics/mlx4.rst @@ -866,6 +986,7 @@ M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> M: Ori Kam <orika@nvidia.com> M: Suanming Mou <suanmingm@nvidia.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mlx F: drivers/common/mlx5/ F: drivers/net/mlx5/ @@ -875,23 +996,27 @@ F: doc/guides/nics/features/mlx5.ini Microsoft mana M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/mana/ F: doc/guides/nics/mana.rst F: doc/guides/nics/features/mana.ini Microsoft vdev_netvsc - EXPERIMENTAL M: Matan Azrad <matan@nvidia.com> +S: Odd Fixes F: drivers/net/vdev_netvsc/ F: doc/guides/nics/vdev_netvsc.rst Microsoft Hyper-V netvsc M: Long Li <longli@microsoft.com> +S: Supported F: drivers/net/netvsc/ F: doc/guides/nics/netvsc.rst F: doc/guides/nics/features/netvsc.ini Netcope nfb M: Martin Spinler <spinler@cesnet.cz> +S: Supported F: drivers/net/nfb/ F: doc/guides/nics/nfb.rst F: doc/guides/nics/features/nfb.ini @@ -899,6 +1024,7 @@ F: doc/guides/nics/features/nfb.ini Netronome nfp M: Chaoyong He <chaoyong.he@corigine.com> M: Niklas Soderlund <niklas.soderlund@corigine.com> +S: Supported F: drivers/net/nfp/ F: doc/guides/nics/nfp.rst F: doc/guides/nics/features/nfp*.ini @@ -906,6 +1032,7 @@ F: doc/guides/nics/features/nfp*.ini NXP dpaa M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa/ F: drivers/net/dpaa/ F: doc/guides/nics/dpaa.rst @@ -914,6 +1041,7 @@ F: doc/guides/nics/features/dpaa.ini NXP dpaa2 M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/mempool/dpaa2/ F: drivers/net/dpaa2/ F: doc/guides/nics/dpaa2.rst @@ -922,6 +1050,7 @@ F: doc/guides/nics/features/dpaa2.ini NXP enetc M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/net/enetc/ F: doc/guides/nics/enetc.rst F: doc/guides/nics/features/enetc.ini @@ -929,18 +1058,21 @@ F: doc/guides/nics/features/enetc.ini NXP enetfec - EXPERIMENTAL M: Apeksha Gupta <apeksha.gupta@nxp.com> M: Sachin Saxena <sachin.saxena@nxp.com> +S: Supported F: drivers/net/enetfec/ F: doc/guides/nics/enetfec.rst F: doc/guides/nics/features/enetfec.ini NXP pfe M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: doc/guides/nics/pfe.rst F: drivers/net/pfe/ F: doc/guides/nics/features/pfe.ini Marvell QLogic bnx2x M: Julien Aube <julien_dpdk@jaube.fr> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/bnx2x/ F: doc/guides/nics/bnx2x.rst @@ -949,6 +1081,7 @@ F: doc/guides/nics/features/bnx2x*.ini Marvell QLogic qede PMD M: Devendra Singh Rawat <dsinghrawat@marvell.com> M: Alok Prasad <palok@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-mrvl F: drivers/net/qede/ F: doc/guides/nics/qede.rst @@ -956,6 +1089,7 @@ F: doc/guides/nics/features/qede*.ini Solarflare sfc_efx M: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> +S: Supported F: drivers/common/sfc_efx/ F: drivers/net/sfc/ F: doc/guides/nics/sfc_efx.rst @@ -963,6 +1097,7 @@ F: doc/guides/nics/features/sfc.ini Wangxun ngbe M: Jiawen Wu <jiawenwu@trustnetic.com> +S: Supported F: drivers/net/ngbe/ F: doc/guides/nics/ngbe.rst F: doc/guides/nics/features/ngbe.ini @@ -970,12 +1105,14 @@ F: doc/guides/nics/features/ngbe.ini Wangxun txgbe M: Jiawen Wu <jiawenwu@trustnetic.com> M: Jian Wang <jianwang@trustnetic.com> +S: Supported F: drivers/net/txgbe/ F: doc/guides/nics/txgbe.rst F: doc/guides/nics/features/txgbe.ini VMware vmxnet3 M: Jochen Behrens <jbehrens@vmware.com> +S: Supported F: drivers/net/vmxnet3/ F: doc/guides/nics/vmxnet3.rst F: doc/guides/nics/features/vmxnet3.ini @@ -983,6 +1120,7 @@ F: doc/guides/nics/features/vmxnet3.ini Vhost-user M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: lib/vhost/ F: doc/guides/prog_guide/vhost_lib.rst @@ -997,6 +1135,7 @@ F: doc/guides/sample_app_ug/vdpa.rst Vhost PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/vhost/ F: doc/guides/nics/vhost.rst @@ -1005,6 +1144,7 @@ F: doc/guides/nics/features/vhost.ini Virtio PMD M: Maxime Coquelin <maxime.coquelin@redhat.com> M: Chenbo Xia <chenbo.xia@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-virtio F: drivers/net/virtio/ F: doc/guides/nics/virtio.rst @@ -1013,26 +1153,31 @@ F: doc/guides/nics/features/virtio*.ini Wind River AVP M: Steven Webster <steven.webster@windriver.com> M: Matt Peters <matt.peters@windriver.com> +S: Supported F: drivers/net/avp/ F: doc/guides/nics/avp.rst F: doc/guides/nics/features/avp.ini PCAP PMD +S: Orphan F: drivers/net/pcap/ F: doc/guides/nics/pcap_ring.rst F: doc/guides/nics/features/pcap.ini Tap PMD +S: Orphan F: drivers/net/tap/ F: doc/guides/nics/tap.rst F: doc/guides/nics/features/tap.ini KNI PMD +S: Obsolete F: drivers/net/kni/ F: doc/guides/nics/kni.rst Ring PMD M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: drivers/net/ring/ F: doc/guides/nics/pcap_ring.rst F: app/test/test_pmd_ring.c @@ -1040,21 +1185,25 @@ F: app/test/test_pmd_ring_perf.c Null Networking PMD M: Tetsuya Mukawa <mtetsuyah@gmail.com> +S: Supported F: drivers/net/null/ Fail-safe PMD M: Gaetan Rivet <grive@u256.net> +S: Odd Fixes F: drivers/net/failsafe/ F: doc/guides/nics/fail_safe.rst F: doc/guides/nics/features/failsafe.ini Softnic PMD M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: drivers/net/softnic/ F: doc/guides/nics/softnic.rst Memif PMD M: Jakub Grajciar <jgrajcia@cisco.com> +S: Supported F: drivers/net/memif/ F: doc/guides/nics/memif.rst F: doc/guides/nics/features/memif.ini @@ -1062,17 +1211,20 @@ F: doc/guides/nics/features/memif.ini Crypto Drivers -------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto F: doc/guides/cryptodevs/features/default.ini AMD CCP Crypto M: Sunil Uttarwar <sunilprakashrao.uttarwar@amd.com> +S: Supported F: drivers/crypto/ccp/ F: doc/guides/cryptodevs/ccp.rst F: doc/guides/cryptodevs/features/ccp.ini ARMv8 Crypto M: Ruifeng Wang <ruifeng.wang@arm.com> +S: Supported F: drivers/crypto/armv8/ F: doc/guides/cryptodevs/armv8.rst F: doc/guides/cryptodevs/features/armv8.ini @@ -1081,12 +1233,14 @@ Broadcom FlexSparc M: Ajit Khaparde <ajit.khaparde@broadcom.com> M: Raveendra Padasalagi <raveendra.padasalagi@broadcom.com> M: Vikas Gupta <vikas.gupta@broadcom.com> +S: Supported F: drivers/crypto/bcmfs/ F: doc/guides/cryptodevs/bcmfs.rst F: doc/guides/cryptodevs/features/bcmfs.ini Cavium OCTEON TX crypto M: Anoob Joseph <anoobj@marvell.com> +S: Supported F: drivers/common/cpt/ F: drivers/crypto/octeontx/ F: doc/guides/cryptodevs/octeontx.rst @@ -1094,17 +1248,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini Crypto Scheduler M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/scheduler/ F: doc/guides/cryptodevs/scheduler.rst HiSilicon UADK crypto M: Zhangfei Gao <zhangfei.gao@linaro.org> +S: Supported F: drivers/crypto/uadk/ F: doc/guides/cryptodevs/uadk.rst F: doc/guides/cryptodevs/features/uadk.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/qat/ F: drivers/common/qat/ F: doc/guides/cryptodevs/qat.rst @@ -1113,6 +1270,7 @@ F: doc/guides/cryptodevs/features/qat.ini IPsec MB M: Kai Ji <kai.ji@intel.com> M: Pablo de Lara <pablo.de.lara.guarch@intel.com> +S: Supported F: drivers/crypto/ipsec_mb/ F: doc/guides/cryptodevs/aesni_gcm.rst F: doc/guides/cryptodevs/aesni_mb.rst @@ -1131,6 +1289,7 @@ Marvell cnxk crypto M: Ankur Dwivedi <adwivedi@marvell.com> M: Anoob Joseph <anoobj@marvell.com> M: Tejasree Kondoj <ktejasree@marvell.com> +S: Supported F: drivers/crypto/cnxk/ F: doc/guides/cryptodevs/cnxk.rst F: doc/guides/cryptodevs/features/cn9k.ini @@ -1139,6 +1298,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini Marvell mvsam M: Michael Shamis <michaelsh@marvell.com> M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/crypto/mvsam/ F: doc/guides/cryptodevs/mvsam.rst F: doc/guides/cryptodevs/features/mvsam.ini @@ -1146,18 +1306,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini Marvell Nitrox M: Nagadheeraj Rottela <rnagadheeraj@marvell.com> M: Srikanth Jampala <jsrikanth@marvell.com> +S: Supported F: drivers/crypto/nitrox/ F: doc/guides/cryptodevs/nitrox.rst F: doc/guides/cryptodevs/features/nitrox.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/crypto/mlx5/ F: doc/guides/cryptodevs/mlx5.rst F: doc/guides/cryptodevs/features/mlx5.ini Null Crypto M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/null/ F: doc/guides/cryptodevs/null.rst F: doc/guides/cryptodevs/features/null.ini @@ -1165,6 +1328,7 @@ F: doc/guides/cryptodevs/features/null.ini NXP CAAM JR M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/caam_jr/ F: doc/guides/cryptodevs/caam_jr.rst F: doc/guides/cryptodevs/features/caam_jr.ini @@ -1172,6 +1336,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini NXP DPAA_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa_sec/ F: doc/guides/cryptodevs/dpaa_sec.rst F: doc/guides/cryptodevs/features/dpaa_sec.ini @@ -1179,18 +1344,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini NXP DPAA2_SEC M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/crypto/dpaa2_sec/ F: doc/guides/cryptodevs/dpaa2_sec.rst F: doc/guides/cryptodevs/features/dpaa2_sec.ini OpenSSL M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/crypto/openssl/ F: doc/guides/cryptodevs/openssl.rst F: doc/guides/cryptodevs/features/openssl.ini Virtio M: Jay Zhou <jianjay.zhou@huawei.com> +S: Supported F: drivers/crypto/virtio/ F: doc/guides/cryptodevs/virtio.rst F: doc/guides/cryptodevs/features/virtio.ini @@ -1198,31 +1366,37 @@ F: doc/guides/cryptodevs/features/virtio.ini Compression Drivers ------------------- +S: Maintained T: git://dpdk.org/next/dpdk-next-crypto Cavium OCTEON TX zipvf M: Ashish Gupta <ashish.gupta@marvell.com> +S: Supported F: drivers/compress/octeontx/ F: doc/guides/compressdevs/octeontx.rst F: doc/guides/compressdevs/features/octeontx.ini Intel QuickAssist M: Kai Ji <kai.ji@intel.com> +S: Supported F: drivers/compress/qat/ F: drivers/common/qat/ ISA-L M: Lee Daly <lee.daly@intel.com> +S: Supported F: drivers/compress/isal/ F: doc/guides/compressdevs/isal.rst F: doc/guides/compressdevs/features/isal.ini NVIDIA mlx5 M: Matan Azrad <matan@nvidia.com> +S: Supported F: drivers/compress/mlx5/ ZLIB M: Sunila Sahu <ssahu@marvell.com> +S: Supported F: drivers/compress/zlib/ F: doc/guides/compressdevs/zlib.rst F: doc/guides/compressdevs/features/zlib.ini @@ -1234,34 +1408,40 @@ DMAdev Drivers Intel IDXD - EXPERIMENTAL M: Bruce Richardson <bruce.richardson@intel.com> M: Kevin Laatz <kevin.laatz@intel.com> +S: Supported F: drivers/dma/idxd/ F: doc/guides/dmadevs/idxd.rst Intel IOAT M: Bruce Richardson <bruce.richardson@intel.com> M: Conor Walsh <conor.walsh@intel.com> +S: Supported F: drivers/dma/ioat/ F: doc/guides/dmadevs/ioat.rst HiSilicon DMA M: Chengwen Feng <fengchengwen@huawei.com> +S: Supported F: drivers/dma/hisilicon/ F: doc/guides/dmadevs/hisilicon.rst Marvell CNXK DPI DMA M: Vamsi Attunuru <vattunuru@marvell.com> +S: Supported F: drivers/dma/cnxk/ F: doc/guides/dmadevs/cnxk.rst NXP DPAA DMA M: Gagandeep Singh <g.singh@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/dma/dpaa/ F: doc/guides/dmadevs/dpaa.rst NXP DPAA2 QDMA M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported F: drivers/dma/dpaa2/ F: doc/guides/dmadevs/dpaa2.rst @@ -1271,12 +1451,14 @@ RegEx Drivers Marvell OCTEON CN9K regex M: Liron Himi <lironh@marvell.com> +S: Supported F: drivers/regex/cn9k/ F: doc/guides/regexdevs/cn9k.rst F: doc/guides/regexdevs/features/cn9k.ini NVIDIA mlx5 M: Ori Kam <orika@nvidia.com> +S: Supported F: drivers/regex/mlx5/ F: doc/guides/regexdevs/mlx5.rst F: doc/guides/regexdevs/features/mlx5.ini @@ -1287,6 +1469,7 @@ MLdev Drivers Marvell ML CNXK M: Srikanth Yalavarthi <syalavarthi@marvell.com> +S: Supported F: drivers/common/cnxk/hw/ml.h F: drivers/common/cnxk/roc_ml* F: drivers/ml/cnxk/ @@ -1299,6 +1482,7 @@ T: git://dpdk.org/next/dpdk-next-virtio Intel ifc M: Xiao Wang <xiao.w.wang@intel.com> +S: Supported F: drivers/vdpa/ifc/ F: doc/guides/vdpadevs/ifc.rst F: doc/guides/vdpadevs/features/ifcvf.ini @@ -1306,12 +1490,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini NVIDIA mlx5 vDPA M: Matan Azrad <matan@nvidia.com> M: Viacheslav Ovsiienko <viacheslavo@nvidia.com> +S: Supported F: drivers/vdpa/mlx5/ F: doc/guides/vdpadevs/mlx5.rst F: doc/guides/vdpadevs/features/mlx5.ini Xilinx sfc vDPA M: Vijay Kumar Srivastava <vsrivast@xilinx.com> +S: Supported F: drivers/vdpa/sfc/ F: doc/guides/vdpadevs/sfc.rst F: doc/guides/vdpadevs/features/sfc.ini @@ -1320,42 +1506,50 @@ F: doc/guides/vdpadevs/features/sfc.ini Eventdev Drivers ---------------- M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev Cavium OCTEON TX ssovf M: Jerin Jacob <jerinj@marvell.com> +S: Supported F: drivers/event/octeontx/ F: doc/guides/eventdevs/octeontx.rst Cavium OCTEON TX timvf M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: drivers/event/octeontx/timvf_* Intel DLB2 M: Timothy McDaniel <timothy.mcdaniel@intel.com> +S: Supported F: drivers/event/dlb2/ F: doc/guides/eventdevs/dlb2.rst Marvell cnxk M: Pavan Nikhilesh <pbhagavatula@marvell.com> M: Shijith Thotton <sthotton@marvell.com> +S: Supported F: drivers/event/cnxk/ F: doc/guides/eventdevs/cnxk.rst NXP DPAA eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa/ F: doc/guides/eventdevs/dpaa.rst NXP DPAA2 eventdev M: Hemant Agrawal <hemant.agrawal@nxp.com> M: Sachin Saxena <sachin.saxena@oss.nxp.com> +S: Supported F: drivers/event/dpaa2/ F: doc/guides/eventdevs/dpaa2.rst Software Eventdev PMD M: Harry van Haaren <harry.van.haaren@intel.com> +S: Supported F: drivers/event/sw/ F: doc/guides/eventdevs/sw.rst F: examples/eventdev_pipeline/ @@ -1363,11 +1557,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst Distributed Software Eventdev PMD M: Mattias Rönnblom <mattias.ronnblom@ericsson.com> +S: Supported F: drivers/event/dsw/ F: doc/guides/eventdevs/dsw.rst Software OPDL Eventdev PMD M: Liang Ma <liangma@liangbit.com> +S: Supported M: Peter Mccarthy <peter.mccarthy@intel.com> F: drivers/event/opdl/ F: doc/guides/eventdevs/opdl.rst @@ -1378,6 +1574,7 @@ Baseband Drivers Intel baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/turbo_sw/ F: doc/guides/bbdevs/turbo_sw.rst @@ -1397,6 +1594,7 @@ F: doc/guides/bbdevs/features/vrb1.ini Null baseband M: Nicolas Chautru <nicolas.chautru@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/null/ F: doc/guides/bbdevs/null.rst @@ -1405,6 +1603,7 @@ F: doc/guides/bbdevs/features/null.ini NXP LA12xx M: Gagandeep Singh <g.singh@nxp.com> M: Hemant Agrawal <hemant.agrawal@nxp.com> +S: Supported T: git://dpdk.org/next/dpdk-next-baseband F: drivers/baseband/la12xx/ F: doc/guides/bbdevs/la12xx.rst @@ -1416,6 +1615,7 @@ GPU Drivers NVIDIA CUDA M: Elena Agostini <eagostini@nvidia.com> +S: Supported F: drivers/gpu/cuda/ F: doc/guides/gpus/cuda.rst @@ -1426,6 +1626,7 @@ Rawdev Drivers Intel FPGA M: Rosen Xu <rosen.xu@intel.com> M: Tianfei zhang <tianfei.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net-intel F: drivers/raw/ifpga/ F: doc/guides/rawdevs/ifpga.rst @@ -1433,18 +1634,21 @@ F: doc/guides/rawdevs/ifpga.rst Marvell CNXK BPHY M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_bphy.rst F: drivers/raw/cnxk_bphy/ Marvell CNXK GPIO M: Jakub Palider <jpalider@marvell.com> M: Tomasz Duszynski <tduszynski@marvell.com> +S: Supported F: doc/guides/rawdevs/cnxk_gpio.rst F: drivers/raw/cnxk_gpio/ NTB M: Jingjing Wu <jingjing.wu@intel.com> M: Junfeng Guo <junfeng.guo@intel.com> +S: Supported F: drivers/raw/ntb/ F: doc/guides/rawdevs/ntb.rst F: examples/ntb/ @@ -1452,6 +1656,7 @@ F: doc/guides/sample_app_ug/ntb.rst NXP DPAA2 CMDIF M: Gagandeep Singh <g.singh@nxp.com> +S: Supported F: drivers/raw/dpaa2_cmdif/ F: doc/guides/rawdevs/dpaa2_cmdif.rst @@ -1461,12 +1666,14 @@ Packet processing Network headers M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/net/ F: app/test/test_cksum.c F: app/test/test_cksum_perf.c Packet CRC M: Jasvinder Singh <jasvinder.singh@intel.com> +S: Supported F: lib/net/net_crc.h F: lib/net/rte_net_crc* F: lib/net/net_crc_avx512.c @@ -1475,6 +1682,7 @@ F: app/test/test_crc.c IP fragmentation & reassembly M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/ip_frag/ F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst F: app/test/test_ipfrag.c @@ -1486,16 +1694,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst Generic Receive Offload - EXPERIMENTAL M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gro/ F: doc/guides/prog_guide/generic_receive_offload_lib.rst Generic Segmentation Offload M: Jiayu Hu <jiayu.hu@intel.com> +S: Supported F: lib/gso/ F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst IPsec M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/ipsec/ F: app/test/test_ipsec* @@ -1506,12 +1717,14 @@ F: app/test-sad/ PDCP - EXPERIMENTAL M: Anoob Joseph <anoobj@marvell.com> M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: lib/pdcp/ F: doc/guides/prog_guide/pdcp_lib.rst F: app/test/test_pdcp* Flow Classify - EXPERIMENTAL - UNMAINTAINED +S: Orphan F: lib/flow_classify/ F: app/test/test_flow_classify* F: doc/guides/prog_guide/flow_classify_lib.rst @@ -1520,6 +1733,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst Distributor M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/distributor/ F: doc/guides/prog_guide/packet_distrib_lib.rst F: app/test/test_distributor* @@ -1528,6 +1742,7 @@ F: doc/guides/sample_app_ug/dist_app.rst Reorder M: Volodymyr Fialko <vfialko@marvell.com> +S: Supported F: lib/reorder/ F: doc/guides/prog_guide/reorder_lib.rst F: app/test/test_reorder* @@ -1536,6 +1751,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst Hierarchical scheduler M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/sched/ F: doc/guides/prog_guide/qos_framework.rst F: app/test/test_pie.c @@ -1547,6 +1763,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst Packet capture M: Reshma Pattan <reshma.pattan@intel.com> M: Stephen Hemminger <stephen@networkplumber.org> +S: Maintained F: lib/pdump/ F: doc/guides/prog_guide/pdump_lib.rst F: app/test/test_pdump.* @@ -1562,6 +1779,7 @@ F: doc/guides/tools/dumpcap.rst Packet Framework ---------------- M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Obsolete F: lib/pipeline/ F: lib/port/ F: lib/table/ @@ -1579,6 +1797,7 @@ Algorithms ACL M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/acl/ F: doc/guides/prog_guide/packet_classif_access_ctrl.rst F: app/test-acl/ @@ -1587,6 +1806,7 @@ F: app/test/test_acl.* EFD M: Byron Marohn <byron.marohn@intel.com> M: Yipeng Wang <yipeng1.wang@intel.com> +S: Supported F: lib/efd/ F: doc/guides/prog_guide/efd_lib.rst F: app/test/test_efd* @@ -1598,6 +1818,7 @@ M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/hash/ F: doc/guides/prog_guide/hash_lib.rst F: doc/guides/prog_guide/toeplitz_hash_lib.rst @@ -1607,6 +1828,7 @@ F: app/test/test_func_reentrancy.c LPM M: Bruce Richardson <bruce.richardson@intel.com> M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/lpm/ F: doc/guides/prog_guide/lpm* F: app/test/test_lpm* @@ -1616,12 +1838,14 @@ F: app/test/test_xmmt_ops.h Membership - EXPERIMENTAL M: Yipeng Wang <yipeng1.wang@intel.com> M: Sameh Gobriel <sameh.gobriel@intel.com> +S: Supported F: lib/member/ F: doc/guides/prog_guide/member_lib.rst F: app/test/test_member* RIB/FIB M: Vladimir Medvedkin <vladimir.medvedkin@intel.com> +S: Supported F: lib/rib/ F: app/test/test_rib* F: lib/fib/ @@ -1630,6 +1854,7 @@ F: app/test-fib/ Traffic metering M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/meter/ F: doc/guides/sample_app_ug/qos_scheduler.rst F: app/test/test_meter.c @@ -1642,12 +1867,14 @@ Other libraries Configuration file M: Cristian Dumitrescu <cristian.dumitrescu@intel.com> +S: Supported F: lib/cfgfile/ F: app/test/test_cfgfile.c F: app/test/test_cfgfiles/ Interactive command line M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/cmdline/ F: app/test-cmdline/ F: app/test/test_cmdline* @@ -1656,11 +1883,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst Key/Value parsing M: Olivier Matz <olivier.matz@6wind.com> +S: Supported F: lib/kvargs/ F: app/test/test_kvargs.c RCU M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> +S: Supported F: lib/rcu/ F: app/test/test_rcu* F: doc/guides/prog_guide/rcu_lib.rst @@ -1668,11 +1897,13 @@ F: doc/guides/prog_guide/rcu_lib.rst PCI M: Chenbo Xia <chenbo.xia@intel.com> M: Gaetan Rivet <grive@u256.net> +S: Supported F: lib/pci/ Power management M: Anatoly Burakov <anatoly.burakov@intel.com> M: David Hunt <david.hunt@intel.com> +S: Supported F: lib/power/ F: doc/guides/prog_guide/power_man.rst F: app/test/test_power* @@ -1683,6 +1914,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst Timers M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com> +S: Supported F: lib/timer/ F: doc/guides/prog_guide/timer_lib.rst F: app/test/test_timer* @@ -1690,25 +1922,30 @@ F: examples/timer/ F: doc/guides/sample_app_ug/timer.rst Job statistics +S: Orphan F: lib/jobstats/ F: examples/l2fwd-jobstats/ F: doc/guides/sample_app_ug/l2_forward_job_stats.rst Metrics +S: Orphan F: lib/metrics/ F: app/test/test_metrics.c Bit-rate statistics +S: Orphan F: lib/bitratestats/ F: app/test/test_bitratestats.c Latency statistics M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: lib/latencystats/ F: app/test/test_latencystats.c Telemetry M: Ciara Power <ciara.power@intel.com> +S: Supported F: lib/telemetry/ F: app/test/test_telemetry* F: usertools/dpdk-telemetry* @@ -1716,6 +1953,7 @@ F: doc/guides/howto/telemetry.rst BPF M: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> +S: Supported F: lib/bpf/ F: examples/bpf/ F: app/test/test_bpf.c @@ -1727,6 +1965,7 @@ M: Jerin Jacob <jerinj@marvell.com> M: Kiran Kumar K <kirankumark@marvell.com> M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Zhirun Yan <zhirun.yan@intel.com> +S: Supported F: lib/graph/ F: doc/guides/prog_guide/graph_lib.rst F: app/test/test_graph* @@ -1736,6 +1975,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst Nodes - EXPERIMENTAL M: Nithin Dabilpuram <ndabilpuram@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported F: lib/node/ @@ -1743,6 +1983,7 @@ Test Applications ----------------- Unit tests framework +S: Maintained F: app/test/commands.c F: app/test/has_hugepage.py F: app/test/packet_burst_generator.c @@ -1758,45 +1999,53 @@ F: app/test/virtual_pmd.h Sample packet helper functions for unit test M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/test/sample_packet_forward.c F: app/test/sample_packet_forward.h Networking drivers testing tool M: Aman Singh <aman.deep.singh@intel.com> M: Yuying Zhang <yuying.zhang@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-net F: app/test-pmd/ F: doc/guides/testpmd_app_ug/ DMA device performance tool M: Cheng Jiang <cheng1.jiang@intel.com> +S: Supported F: app/test-dma-perf/ F: doc/guides/tools/dmaperf.rst Flow performance tool M: Wisam Jaddo <wisamm@nvidia.com> +S: Supported F: app/test-flow-perf/ F: doc/guides/tools/flow-perf.rst Security performance tool M: Anoob Joseph <anoobj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-security-perf/ F: doc/guides/tools/securityperf.rst Compression performance test application T: git://dpdk.org/next/dpdk-next-crypto +S: Orphan F: app/test-compress-perf/ F: doc/guides/tools/comp_perf.rst Crypto performance test application M: Ciara Power <ciara.power@intel.com> +S: Supported T: git://dpdk.org/next/dpdk-next-crypto F: app/test-crypto-perf/ F: doc/guides/tools/cryptoperf.rst Eventdev test application M: Jerin Jacob <jerinj@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: app/test-eventdev/ F: doc/guides/tools/testeventdev.rst @@ -1805,12 +2054,14 @@ F: app/test/test_event_ring.c Procinfo tool M: Reshma Pattan <reshma.pattan@intel.com> +S: Supported F: app/proc-info/ F: doc/guides/tools/proc_info.rst DTS M: Lijuan Tu <lijuan.tu@intel.com> M: Juraj Linkeš <juraj.linkes@pantheon.tech> +S: Supported F: dts/ F: devtools/dts-check-format.sh F: doc/guides/tools/dts.rst @@ -1820,77 +2071,92 @@ Other Example Applications -------------------------- Ethtool example +S: Orphan F: examples/ethtool/ F: doc/guides/sample_app_ug/ethtool.rst FIPS validation example M: Brian Dooley <brian.dooley@intel.com> M: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com> +S: Supported F: examples/fips_validation/ F: doc/guides/sample_app_ug/fips_validation.rst Flow filtering example M: Ori Kam <orika@nvidia.com> +S: Supported F: examples/flow_filtering/ F: doc/guides/sample_app_ug/flow_filtering.rst Helloworld example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/helloworld/ F: doc/guides/sample_app_ug/hello_world.rst IPsec security gateway example M: Radu Nicolau <radu.nicolau@intel.com> M: Akhil Goyal <gakhil@marvell.com> +S: Supported F: examples/ipsec-secgw/ F: doc/guides/sample_app_ug/ipsec_secgw.rst IPv4 multicast example +S: Orphan F: examples/ipv4_multicast/ F: doc/guides/sample_app_ug/ipv4_multicast.rst L2 forwarding example M: Bruce Richardson <bruce.richardson@intel.com> +S: Supported F: examples/l2fwd/ F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst L2 forwarding with cache allocation example M: Tomasz Kantecki <tomasz.kantecki@intel.com> +S: Supported F: doc/guides/sample_app_ug/l2_forward_cat.rst F: examples/l2fwd-cat/ L2 forwarding with eventdev example M: Sunil Kumar Kori <skori@marvell.com> M: Pavan Nikhilesh <pbhagavatula@marvell.com> +S: Supported T: git://dpdk.org/next/dpdk-next-eventdev F: examples/l2fwd-event/ F: doc/guides/sample_app_ug/l2_forward_event.rst L3 forwarding example +S: Maintained F: examples/l3fwd/ F: doc/guides/sample_app_ug/l3_forward.rst Link status interrupt example +S: Maintained F: examples/link_status_interrupt/ F: doc/guides/sample_app_ug/link_status_intr.rst PTP client example M: Kirill Rybalchenko <kirill.rybalchenko@intel.com> +S: Supported F: examples/ptpclient/ Rx/Tx callbacks example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/rxtx_callbacks/ F: doc/guides/sample_app_ug/rxtx_callbacks.rst Skeleton example M: Bruce Richardson <bruce.richardson@intel.com> M: John McNamara <john.mcnamara@intel.com> +S: Supported F: examples/skeleton/ F: doc/guides/sample_app_ug/skeleton.rst VMDq examples +S: Orphan F: examples/vmdq/ F: doc/guides/sample_app_ug/vmdq_forwarding.rst F: examples/vmdq_dcb/ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v2 ] tap: fix build of TAP BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger 2023-07-19 16:07 ` [PATCH v2] " Stephen Hemminger 2023-07-20 17:21 ` [PATCH v3] " Stephen Hemminger @ 2023-07-20 17:45 ` Stephen Hemminger 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger ` (4 subsequent siblings) 7 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-20 17:45 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger The code was depending on old versions of headers from iproute2. Include those headers here so that build works. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. This patch does not address several other issues with this BPF code. It should be using BTF and the conversion into array is a mess. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/bpf_api.h | 261 ++++++++++++++++++++++++++++++ drivers/net/tap/bpf_elf.h | 43 +++++ drivers/net/tap/tap_bpf_program.c | 14 +- drivers/net/tap/tap_rss.h | 2 +- 4 files changed, 316 insertions(+), 4 deletions(-) create mode 100644 drivers/net/tap/bpf_api.h create mode 100644 drivers/net/tap/bpf_elf.h diff --git a/drivers/net/tap/bpf_api.h b/drivers/net/tap/bpf_api.h new file mode 100644 index 000000000000..d13247199c9a --- /dev/null +++ b/drivers/net/tap/bpf_api.h @@ -0,0 +1,261 @@ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf_elf.h b/drivers/net/tap/bpf_elf.h new file mode 100644 index 000000000000..406c30874ac3 --- /dev/null +++ b/drivers/net/tap/bpf_elf.h @@ -0,0 +1,43 @@ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/tap_bpf_program.c index 20c310e5e7ba..daf30c4aba86 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/tap_bpf_program.c @@ -1,5 +1,12 @@ /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 * Copyright 2017 Mellanox Technologies, Ltd + * + * This file is not built as part of normal DPDK build. + * It is used to generate the eBPF code for TAP RSS. + * + * To build it use: + * clang -O2 -emit-llvm -c tap_bpf_program.c -o - | \ + * llc -march=bpf -filetype=obj -o tap_bpf_program.o */ #include <stdint.h> @@ -14,8 +21,9 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> +#include "bpf_api.h" +#include "bpf_elf.h" #include "tap_rss.h" /** Create IPv4 address */ @@ -75,14 +83,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b68..dff46a012f94 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v3] tap: fix build of TAP BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger ` (2 preceding siblings ...) 2023-07-20 17:45 ` [PATCH v2 ] tap: fix build of TAP BPF program Stephen Hemminger @ 2023-07-20 23:25 ` Stephen Hemminger 2023-07-21 13:05 ` Ferruh Yigit ` (2 more replies) 2023-07-22 16:32 ` [PATCH v4] " Stephen Hemminger ` (3 subsequent siblings) 7 siblings, 3 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-20 23:25 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Move the BPF program related code into a subdirectory. And add a Makefile for building it. The code was depending on old versions of headers from iproute2. Include those headers here so that build works. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver. Update the documentation. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 ++ drivers/net/tap/bpf/bpf_api.h | 261 ++++++++++++++++++++ drivers/net/tap/bpf/bpf_elf.h | 43 ++++ drivers/net/tap/bpf/bpf_extract.py | 80 ++++++ drivers/net/tap/{ => bpf}/tap_bpf_program.c | 9 +- drivers/net/tap/tap_rss.h | 2 +- 8 files changed, 413 insertions(+), 12 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%) diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst index 07df0d35a2ec..449e747994bd 100644 --- a/doc/guides/nics/tap.rst +++ b/doc/guides/nics/tap.rst @@ -256,15 +256,12 @@ C functions under different ELF sections. 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above -3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file:: +3. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file + and extract the resulting instructions into ``tap_bpf_insn.h``. - clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \ - -filetype=obj -o <tap_bpf_program.o> + cd bpf; make - -4. Use a tool that receives two parameters: an eBPF object file and a section -name, and prints out the section as a C array of eBPF instructions. -Embed the C array in your TAP PMD tree. +4. Recompile the TAP PMD. The C arrays are uploaded to the kernel using BPF system calls. diff --git a/drivers/net/tap/bpf/.gitignore b/drivers/net/tap/bpf/.gitignore new file mode 100644 index 000000000000..30a258f1af3b --- /dev/null +++ b/drivers/net/tap/bpf/.gitignore @@ -0,0 +1 @@ +tap_bpf_program.o diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile new file mode 100644 index 000000000000..e5ae4e1f5adc --- /dev/null +++ b/drivers/net/tap/bpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# This file is not built as part of normal DPDK build. +# It is used to generate the eBPF code for TAP RSS. +CLANG=clang +CLANG_OPTS=-O2 +TARGET=../tap_bpf_insns.h + +all: $(TARGET) + +clean: + rm tap_bpf_program.o $(TARGET) + +tap_bpf_program.o: tap_bpf_program.c + $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ + llc -march=bpf -filetype=obj -o $@ + +$(TARGET): bpf_extract.py tap_bpf_program.o + python3 bpf_extract.py tap_bpf_program.o $@ diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h new file mode 100644 index 000000000000..d13247199c9a --- /dev/null +++ b/drivers/net/tap/bpf/bpf_api.h @@ -0,0 +1,261 @@ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h new file mode 100644 index 000000000000..406c30874ac3 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_elf.h @@ -0,0 +1,43 @@ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py new file mode 100644 index 000000000000..d79fc61020b3 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_extract.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org> + +import argparse +import sys +import struct +from tempfile import TemporaryFile +from elftools.elf.elffile import ELFFile + + +def load_sections(elffile): + result = [] + DATA = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")] + for name, tag in DATA: + section = elffile.get_section_by_name(name) + if section: + insns = struct.iter_unpack('<BBhL', section.data()) + result.append([tag, insns]) + return result + + +def dump_sections(sections, out): + for name, insns in sections: + print(f'\nstatic const struct bpf_insn {name} = {{', file=out) + for bpf in insns: + code = bpf[0] + src = bpf[1] >> 4 + dst = bpf[1] & 0xf + off = bpf[2] + imm = bpf[3] + print('\t{{{:#02x}, {:4d}, {:4d}, {:8d}, {:#010x}}},'.format( + code, dst, src, off, imm), + file=out) + print('};', file=out) + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument("input", + nargs='+', + help="input object file path or '-' for stdin") + parser.add_argument("output", help="output C file path or '-' for stdout") + return parser.parse_args() + + +def open_input(path): + if path == "-": + temp = TemporaryFile() + temp.write(sys.stdin.buffer.read()) + return temp + return open(path, "rb") + + +def open_output(path): + if path == "-": + return sys.stdout + return open(path, "w") + + +def write_header(output): + print("/* SPDX-License-Identifier: BSD-3-Clause", file=output) + print(" * Compiled BPF instructions do not edit", file=output) + print(" */\n", file=output) + print("#include <tap_bpf.h>", file=output) + + +def main(): + args = parse_args() + + output = open_output(args.output) + write_header(output) + for path in args.input: + elffile = ELFFile(open_input(path)) + sections = load_sections(elffile) + dump_sections(sections, output) + + +if __name__ == "__main__": + main() diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c similarity index 97% rename from drivers/net/tap/tap_bpf_program.c rename to drivers/net/tap/bpf/tap_bpf_program.c index 20c310e5e7ba..ff6f1606fb38 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -14,9 +14,10 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> -#include "tap_rss.h" +#include "bpf_api.h" +#include "bpf_elf.h" +#include "../tap_rss.h" /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ @@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b68..dff46a012f94 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v3] tap: fix build of TAP BPF program 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger @ 2023-07-21 13:05 ` Ferruh Yigit 2023-07-21 15:43 ` Stephen Hemminger 2023-07-23 2:21 ` Stephen Hemminger 2023-07-26 16:31 ` Stephen Hemminger 2 siblings, 1 reply; 34+ messages in thread From: Ferruh Yigit @ 2023-07-21 13:05 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, Long Li, Ophir Munk, Thomas Monjalon On 7/21/2023 12:25 AM, Stephen Hemminger wrote: > Move the BPF program related code into a subdirectory. > And add a Makefile for building it. > > The code was depending on old versions of headers from iproute2. > Include those headers here so that build works. > Thanks Stephen, build works now. But I am not sure about importing dependent headers to DPDK, could build work with latest external headers if application updated accordingly? > The standalone build was also broken because by > commit ef5baf3486e0 ("replace packed attributes") > which introduced __rte_packed into this code. > > Add a python program to extract the resulting BPF into > a format that can be consumed by the TAP driver. > > Update the documentation. > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> <...> > --- /dev/null > +++ b/drivers/net/tap/bpf/bpf_api.h > @@ -0,0 +1,261 @@ > +#ifndef __BPF_API__ > +#define __BPF_API__ > + What should be License and Copyright of these files? Same for all imported headers. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v3] tap: fix build of TAP BPF program 2023-07-21 13:05 ` Ferruh Yigit @ 2023-07-21 15:43 ` Stephen Hemminger 0 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-21 15:43 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev, Long Li, Ophir Munk, Thomas Monjalon On Fri, 21 Jul 2023 14:05:52 +0100 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > On 7/21/2023 12:25 AM, Stephen Hemminger wrote: > > Move the BPF program related code into a subdirectory. > > And add a Makefile for building it. > > > > The code was depending on old versions of headers from iproute2. > > Include those headers here so that build works. > > > > Thanks Stephen, build works now. > But I am not sure about importing dependent headers to DPDK, could build > work with latest external headers if application updated accordingly? These are not exported headers, it looks like Ophir was extracting them from iproute2. The headers are GPL-2.0 licensed; though just asked Daniel to allow BSD-3-clause version. Not much is being used so we could just open code the parts that are used. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v3] tap: fix build of TAP BPF program 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger 2023-07-21 13:05 ` Ferruh Yigit @ 2023-07-23 2:21 ` Stephen Hemminger 2023-07-26 16:31 ` Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-23 2:21 UTC (permalink / raw) To: dev On Thu, 20 Jul 2023 16:25:49 -0700 Stephen Hemminger <stephen@networkplumber.org> wrote: > Move the BPF program related code into a subdirectory. > And add a Makefile for building it. > > The code was depending on old versions of headers from iproute2. > Include those headers here so that build works. > > The standalone build was also broken because by > commit ef5baf3486e0 ("replace packed attributes") > which introduced __rte_packed into this code. > > Add a python program to extract the resulting BPF into > a format that can be consumed by the TAP driver. > > Update the documentation. > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Note: there are a couple of bogus checkpatch warnings from this. The tap_bpf_program is not a regular DPDK library so it doesn't use the DPDK macros. And the bpf_api.h and bpf_elf.h are from iproute2 upstream and won't conform to DPDK checkpatch requirements. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v3] tap: fix build of TAP BPF program 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger 2023-07-21 13:05 ` Ferruh Yigit 2023-07-23 2:21 ` Stephen Hemminger @ 2023-07-26 16:31 ` Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-26 16:31 UTC (permalink / raw) To: dev On Thu, 20 Jul 2023 16:25:49 -0700 Stephen Hemminger <stephen@networkplumber.org> wrote: > Move the BPF program related code into a subdirectory. > And add a Makefile for building it. > > The code was depending on old versions of headers from iproute2. > Include those headers here so that build works. > > The standalone build was also broken because by > commit ef5baf3486e0 ("replace packed attributes") > which introduced __rte_packed into this code. > > Add a python program to extract the resulting BPF into > a format that can be consumed by the TAP driver. > > Update the documentation. > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Some backstory notes: 0. No longer work for Microsoft, so don't have Azure/Failsafe/TAP setup. Therefore compile tested only. 1. Went down this rabbit hole while trying to clear some of the DPDK patch backlog, and ran into this one fix for RSS on fragmented packets https://patchwork.dpdk.org/project/dpdk/patch/20220420112400.2271-1-madhuker.mythri@oracle.com/ 2. This version of patch only makes the BPF program build. It does not change the BPF program used currently by TAP device. 3. Doing build will change the bpf program since clang is probably optimizing more now. Bottom line: Merging the patch won't fix the RSS bug, it won't change the current TAP device behavior (same BPF). But it will allow for easier later fix in next release. ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v4] tap: fix build of TAP BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger ` (3 preceding siblings ...) 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger @ 2023-07-22 16:32 ` Stephen Hemminger 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger ` (2 subsequent siblings) 7 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-07-22 16:32 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Move the BPF program related code into a subdirectory. And add a Makefile for building it. The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver. Update the documentation. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- v4 - update bpf_api.h and bpf_elf.h with SPDK headers from upstream doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 ++ drivers/net/tap/bpf/bpf_api.h | 275 ++++++++++++++++++++ drivers/net/tap/bpf/bpf_elf.h | 53 ++++ drivers/net/tap/bpf/bpf_extract.py | 80 ++++++ drivers/net/tap/{ => bpf}/tap_bpf_program.c | 9 +- drivers/net/tap/tap_rss.h | 2 +- 8 files changed, 437 insertions(+), 12 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%) diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst index 07df0d35a2ec..449e747994bd 100644 --- a/doc/guides/nics/tap.rst +++ b/doc/guides/nics/tap.rst @@ -256,15 +256,12 @@ C functions under different ELF sections. 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above -3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file:: +3. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file + and extract the resulting instructions into ``tap_bpf_insn.h``. - clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \ - -filetype=obj -o <tap_bpf_program.o> + cd bpf; make - -4. Use a tool that receives two parameters: an eBPF object file and a section -name, and prints out the section as a C array of eBPF instructions. -Embed the C array in your TAP PMD tree. +4. Recompile the TAP PMD. The C arrays are uploaded to the kernel using BPF system calls. diff --git a/drivers/net/tap/bpf/.gitignore b/drivers/net/tap/bpf/.gitignore new file mode 100644 index 000000000000..30a258f1af3b --- /dev/null +++ b/drivers/net/tap/bpf/.gitignore @@ -0,0 +1 @@ +tap_bpf_program.o diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile new file mode 100644 index 000000000000..e5ae4e1f5adc --- /dev/null +++ b/drivers/net/tap/bpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# This file is not built as part of normal DPDK build. +# It is used to generate the eBPF code for TAP RSS. +CLANG=clang +CLANG_OPTS=-O2 +TARGET=../tap_bpf_insns.h + +all: $(TARGET) + +clean: + rm tap_bpf_program.o $(TARGET) + +tap_bpf_program.o: tap_bpf_program.c + $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ + llc -march=bpf -filetype=obj -o $@ + +$(TARGET): bpf_extract.py tap_bpf_program.o + python3 bpf_extract.py tap_bpf_program.o $@ diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h new file mode 100644 index 000000000000..5887d3a851cf --- /dev/null +++ b/drivers/net/tap/bpf/bpf_api.h @@ -0,0 +1,275 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** libbpf pin type. */ +enum libbpf_pin_type { + LIBBPF_PIN_NONE, + /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ + LIBBPF_PIN_BY_NAME, +}; + +/** Type helper macros. */ + +#define __uint(name, val) int (*name)[val] +#define __type(name, val) typeof(val) *name +#define __array(name, val) typeof(val) *name[] + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h new file mode 100644 index 000000000000..ea8a11c95c0f --- /dev/null +++ b/drivers/net/tap/bpf/bpf_elf.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ + struct ____btf_map_##name { \ + type_key key; \ + type_val value; \ + }; \ + struct ____btf_map_##name \ + __attribute__ ((section(".maps." #name), used)) \ + ____btf_map_##name = { } + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py new file mode 100644 index 000000000000..d79fc61020b3 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_extract.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org> + +import argparse +import sys +import struct +from tempfile import TemporaryFile +from elftools.elf.elffile import ELFFile + + +def load_sections(elffile): + result = [] + DATA = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")] + for name, tag in DATA: + section = elffile.get_section_by_name(name) + if section: + insns = struct.iter_unpack('<BBhL', section.data()) + result.append([tag, insns]) + return result + + +def dump_sections(sections, out): + for name, insns in sections: + print(f'\nstatic const struct bpf_insn {name} = {{', file=out) + for bpf in insns: + code = bpf[0] + src = bpf[1] >> 4 + dst = bpf[1] & 0xf + off = bpf[2] + imm = bpf[3] + print('\t{{{:#02x}, {:4d}, {:4d}, {:8d}, {:#010x}}},'.format( + code, dst, src, off, imm), + file=out) + print('};', file=out) + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument("input", + nargs='+', + help="input object file path or '-' for stdin") + parser.add_argument("output", help="output C file path or '-' for stdout") + return parser.parse_args() + + +def open_input(path): + if path == "-": + temp = TemporaryFile() + temp.write(sys.stdin.buffer.read()) + return temp + return open(path, "rb") + + +def open_output(path): + if path == "-": + return sys.stdout + return open(path, "w") + + +def write_header(output): + print("/* SPDX-License-Identifier: BSD-3-Clause", file=output) + print(" * Compiled BPF instructions do not edit", file=output) + print(" */\n", file=output) + print("#include <tap_bpf.h>", file=output) + + +def main(): + args = parse_args() + + output = open_output(args.output) + write_header(output) + for path in args.input: + elffile = ELFFile(open_input(path)) + sections = load_sections(elffile) + dump_sections(sections, output) + + +if __name__ == "__main__": + main() diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c similarity index 97% rename from drivers/net/tap/tap_bpf_program.c rename to drivers/net/tap/bpf/tap_bpf_program.c index 20c310e5e7ba..ff6f1606fb38 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -14,9 +14,10 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> -#include "tap_rss.h" +#include "bpf_api.h" +#include "bpf_elf.h" +#include "../tap_rss.h" /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ @@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b68..dff46a012f94 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.39.2 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 0/3] net/tap: update and fix the BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger ` (4 preceding siblings ...) 2023-07-22 16:32 ` [PATCH v4] " Stephen Hemminger @ 2023-10-31 22:08 ` Stephen Hemminger 2023-10-31 22:08 ` [PATCH 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger ` (2 more replies) 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger 7 siblings, 3 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:08 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols. Madhuker Mythri (1): net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger (2): net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 + drivers/net/tap/bpf/bpf_api.h | 275 ++ drivers/net/tap/bpf/bpf_elf.h | 53 + drivers/net/tap/bpf/bpf_extract.py | 80 + drivers/net/tap/{ => bpf}/tap_bpf_program.c | 56 +- drivers/net/tap/tap_bpf_insns.h | 2992 ++++++++++--------- drivers/net/tap/tap_rss.h | 2 +- 9 files changed, 1995 insertions(+), 1493 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 1/3] net/tap: support infrastructure to build the BPF filter 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger @ 2023-10-31 22:08 ` Stephen Hemminger 2023-10-31 22:08 ` [PATCH 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger 2023-10-31 22:08 ` [PATCH 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:08 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Move the BPF program related code into a subdirectory. And add a Makefile for building it. The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver. Update the documentation. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 ++ drivers/net/tap/bpf/bpf_api.h | 275 ++++++++++++++++++++ drivers/net/tap/bpf/bpf_elf.h | 53 ++++ drivers/net/tap/bpf/bpf_extract.py | 80 ++++++ drivers/net/tap/{ => bpf}/tap_bpf_program.c | 9 +- drivers/net/tap/tap_rss.h | 2 +- 8 files changed, 437 insertions(+), 12 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%) diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst index 07df0d35a2..449e747994 100644 --- a/doc/guides/nics/tap.rst +++ b/doc/guides/nics/tap.rst @@ -256,15 +256,12 @@ C functions under different ELF sections. 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above -3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file:: +3. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file + and extract the resulting instructions into ``tap_bpf_insn.h``. - clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \ - -filetype=obj -o <tap_bpf_program.o> + cd bpf; make - -4. Use a tool that receives two parameters: an eBPF object file and a section -name, and prints out the section as a C array of eBPF instructions. -Embed the C array in your TAP PMD tree. +4. Recompile the TAP PMD. The C arrays are uploaded to the kernel using BPF system calls. diff --git a/drivers/net/tap/bpf/.gitignore b/drivers/net/tap/bpf/.gitignore new file mode 100644 index 0000000000..30a258f1af --- /dev/null +++ b/drivers/net/tap/bpf/.gitignore @@ -0,0 +1 @@ +tap_bpf_program.o diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile new file mode 100644 index 0000000000..e5ae4e1f5a --- /dev/null +++ b/drivers/net/tap/bpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# This file is not built as part of normal DPDK build. +# It is used to generate the eBPF code for TAP RSS. +CLANG=clang +CLANG_OPTS=-O2 +TARGET=../tap_bpf_insns.h + +all: $(TARGET) + +clean: + rm tap_bpf_program.o $(TARGET) + +tap_bpf_program.o: tap_bpf_program.c + $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ + llc -march=bpf -filetype=obj -o $@ + +$(TARGET): bpf_extract.py tap_bpf_program.o + python3 bpf_extract.py tap_bpf_program.o $@ diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h new file mode 100644 index 0000000000..5887d3a851 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_api.h @@ -0,0 +1,275 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** libbpf pin type. */ +enum libbpf_pin_type { + LIBBPF_PIN_NONE, + /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ + LIBBPF_PIN_BY_NAME, +}; + +/** Type helper macros. */ + +#define __uint(name, val) int (*name)[val] +#define __type(name, val) typeof(val) *name +#define __array(name, val) typeof(val) *name[] + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h new file mode 100644 index 0000000000..ea8a11c95c --- /dev/null +++ b/drivers/net/tap/bpf/bpf_elf.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ + struct ____btf_map_##name { \ + type_key key; \ + type_val value; \ + }; \ + struct ____btf_map_##name \ + __attribute__ ((section(".maps." #name), used)) \ + ____btf_map_##name = { } + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py new file mode 100644 index 0000000000..d79fc61020 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_extract.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org> + +import argparse +import sys +import struct +from tempfile import TemporaryFile +from elftools.elf.elffile import ELFFile + + +def load_sections(elffile): + result = [] + DATA = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")] + for name, tag in DATA: + section = elffile.get_section_by_name(name) + if section: + insns = struct.iter_unpack('<BBhL', section.data()) + result.append([tag, insns]) + return result + + +def dump_sections(sections, out): + for name, insns in sections: + print(f'\nstatic const struct bpf_insn {name} = {{', file=out) + for bpf in insns: + code = bpf[0] + src = bpf[1] >> 4 + dst = bpf[1] & 0xf + off = bpf[2] + imm = bpf[3] + print('\t{{{:#02x}, {:4d}, {:4d}, {:8d}, {:#010x}}},'.format( + code, dst, src, off, imm), + file=out) + print('};', file=out) + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument("input", + nargs='+', + help="input object file path or '-' for stdin") + parser.add_argument("output", help="output C file path or '-' for stdout") + return parser.parse_args() + + +def open_input(path): + if path == "-": + temp = TemporaryFile() + temp.write(sys.stdin.buffer.read()) + return temp + return open(path, "rb") + + +def open_output(path): + if path == "-": + return sys.stdout + return open(path, "w") + + +def write_header(output): + print("/* SPDX-License-Identifier: BSD-3-Clause", file=output) + print(" * Compiled BPF instructions do not edit", file=output) + print(" */\n", file=output) + print("#include <tap_bpf.h>", file=output) + + +def main(): + args = parse_args() + + output = open_output(args.output) + write_header(output) + for path in args.input: + elffile = ELFFile(open_input(path)) + sections = load_sections(elffile) + dump_sections(sections, output) + + +if __name__ == "__main__": + main() diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c similarity index 97% rename from drivers/net/tap/tap_bpf_program.c rename to drivers/net/tap/bpf/tap_bpf_program.c index 20c310e5e7..ff6f1606fb 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -14,9 +14,10 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> -#include "tap_rss.h" +#include "bpf_api.h" +#include "bpf_elf.h" +#include "../tap_rss.h" /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ @@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b..dff46a012f 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 2/3] net/tap: Fixed RSS algorithm to support fragmented packets 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger 2023-10-31 22:08 ` [PATCH 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger @ 2023-10-31 22:08 ` Stephen Hemminger 2023-10-31 22:08 ` [PATCH 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:08 UTC (permalink / raw) To: dev; +Cc: Madhuker Mythri, Stephen Hemminger From: Madhuker Mythri <madhuker.mythri@oracle.com> As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues. The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD. So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format. Bugzilla Id: 870 Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c index ff6f1606fb..3d431dfa43 100644 --- a/drivers/net/tap/bpf/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -19,6 +19,8 @@ #include "bpf_elf.h" #include "../tap_rss.h" +#include "bpf_api.h" + /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ (((b) & 0xff) << 16) | \ @@ -132,6 +134,8 @@ rss_l3_l4(struct __sk_buff *skb) __u8 *key = 0; __u32 len; __u32 queue = 0; + bool mf = 0; + __u16 frag_off = 0; rsskey = map_lookup_elem(&map_keys, &key_idx); if (!rsskey) { @@ -156,6 +160,8 @@ rss_l3_l4(struct __sk_buff *skb) return TC_ACT_OK; __u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr); + __u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off); + __u8 *prot_addr = data + off + offsetof(struct iphdr, protocol); __u8 *src_dst_port = data + off + sizeof(struct iphdr); struct ipv4_l3_l4_tuple v4_tuple = { .src_addr = IPv4(*(src_dst_addr + 0), @@ -166,11 +172,25 @@ rss_l3_l4(struct __sk_buff *skb) *(src_dst_addr + 5), *(src_dst_addr + 6), *(src_dst_addr + 7)), - .sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)), - .dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)), + .sport = 0, + .dport = 0, }; + /** Fetch the L4-payer port numbers only in-case of TCP/UDP + ** and also if the packet is not fragmented. Since fragmented + ** chunks do not have L4 TCP/UDP header. + **/ + if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) { + frag_off = PORT(*(frag_off_addr + 0), + *(frag_off_addr + 1)); + mf = frag_off & 0x2000; + frag_off = frag_off & 0x1fff; + if (mf == 0 && frag_off == 0) { + v4_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v4_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } + } __u8 input_len = sizeof(v4_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) input_len--; @@ -183,6 +203,9 @@ rss_l3_l4(struct __sk_buff *skb) offsetof(struct ipv6hdr, saddr); __u8 *src_dst_port = data + off + sizeof(struct ipv6hdr); + __u8 *next_hdr = data + off + + offsetof(struct ipv6hdr, nexthdr); + struct ipv6_l3_l4_tuple v6_tuple; for (j = 0; j < 4; j++) *((uint32_t *)&v6_tuple.src_addr + j) = @@ -192,10 +215,18 @@ rss_l3_l4(struct __sk_buff *skb) *((uint32_t *)&v6_tuple.dst_addr + j) = __builtin_bswap32(*((uint32_t *) src_dst_addr + 4 + j)); - v6_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v6_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); + + /** Fetch the L4 header port-numbers only if next-header + * is TCP/UDP **/ + if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) { + v6_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v6_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } else { + v6_tuple.sport = 0; + v6_tuple.dport = 0; + } __u8 input_len = sizeof(v6_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 3/3] net/tap; rebuild and update the BPF flow program 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger 2023-10-31 22:08 ` [PATCH 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-10-31 22:08 ` [PATCH 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger @ 2023-10-31 22:08 ` Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:08 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Rebuild with commit c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/tap_bpf_insns.h | 2992 ++++++++++++++++--------------- 1 file changed, 1519 insertions(+), 1473 deletions(-) diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index 1a91bbad13..9efebea80a 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -1,64 +1,62 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2017 Mellanox Technologies, Ltd + * Compiled BPF instructions do not edit */ #include <tap_bpf.h> -/* bpf_insn array matching cls_q section. See tap_bpf_program.c file */ -static struct bpf_insn cls_q_insns[] = { +static const struct bpf_insn cls_q_insns = { {0x61, 2, 1, 52, 0x00000000}, {0x18, 3, 0, 0, 0xdeadbeef}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x63, 10, 3, -4, 0x00000000}, {0xb7, 0, 0, 0, 0x00000000}, {0x61, 3, 10, -4, 0x00000000}, - {0x07, 3, 0, 0, 0x7cafe800}, + {0x7, 3, 0, 0, 0x7cafe800}, {0x67, 3, 0, 0, 0x00000020}, {0x77, 3, 0, 0, 0x00000020}, {0x5d, 2, 3, 4, 0x00000000}, {0xb7, 2, 0, 0, 0x00000000}, {0x63, 1, 2, 52, 0x00000000}, {0x18, 0, 0, 0, 0xffffffff}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, }; -/* bpf_insn array matching l3_l4 section. see tap_bpf_program.c file */ -static struct bpf_insn l3_l4_hash_insns[] = { +static const struct bpf_insn l3_l4_hash_insns = { {0xbf, 7, 1, 0, 0x00000000}, - {0x61, 8, 7, 16, 0x00000000}, - {0x61, 6, 7, 76, 0x00000000}, + {0x61, 6, 7, 16, 0x00000000}, + {0x61, 8, 7, 76, 0x00000000}, {0x61, 9, 7, 80, 0x00000000}, {0x18, 1, 0, 0, 0xdeadbeef}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x63, 10, 1, -4, 0x00000000}, {0xbf, 2, 10, 0, 0x00000000}, - {0x07, 2, 0, 0, 0xfffffffc}, - {0x18, 1, 1, 0, 0x0000cafe}, - {0x00, 0, 0, 0, 0x00000000}, + {0x7, 2, 0, 0, 0xfffffffc}, + {0x18, 1, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x85, 0, 0, 0, 0x00000001}, {0x55, 0, 0, 21, 0x00000000}, {0xb7, 1, 0, 0, 0x00000a64}, {0x6b, 10, 1, -16, 0x00000000}, {0x18, 1, 0, 0, 0x69666e6f}, - {0x00, 0, 0, 0, 0x65727567}, + {0x0, 0, 0, 0, 0x65727567}, {0x7b, 10, 1, -24, 0x00000000}, {0x18, 1, 0, 0, 0x6e207369}, - {0x00, 0, 0, 0, 0x6320746f}, + {0x0, 0, 0, 0, 0x6320746f}, {0x7b, 10, 1, -32, 0x00000000}, {0x18, 1, 0, 0, 0x20737372}, - {0x00, 0, 0, 0, 0x2079656b}, + {0x0, 0, 0, 0, 0x2079656b}, {0x7b, 10, 1, -40, 0x00000000}, {0x18, 1, 0, 0, 0x68736168}, - {0x00, 0, 0, 0, 0x203a2928}, + {0x0, 0, 0, 0, 0x203a2928}, {0x7b, 10, 1, -48, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, {0x73, 10, 7, -14, 0x00000000}, {0xbf, 1, 10, 0, 0x00000000}, - {0x07, 1, 0, 0, 0xffffffd0}, + {0x7, 1, 0, 0, 0xffffffd0}, {0xb7, 2, 0, 0, 0x00000023}, {0x85, 0, 0, 0, 0x00000006}, - {0x05, 0, 0, 1632, 0x00000000}, + {0x5, 0, 0, 1680, 0x00000000}, {0xb7, 1, 0, 0, 0x0000000e}, {0x61, 2, 7, 20, 0x00000000}, {0x15, 2, 0, 10, 0x00000000}, @@ -66,1630 +64,1678 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0x55, 2, 0, 8, 0x0000a888}, {0xbf, 2, 7, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000012}, - {0x2d, 1, 9, 1622, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x00000012}, + {0x2d, 1, 9, 1670, 0x00000000}, {0xb7, 1, 0, 0, 0x00000012}, - {0x69, 8, 6, 16, 0x00000000}, + {0x69, 6, 8, 16, 0x00000000}, {0xbf, 7, 2, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x0000ffff}, {0x7b, 10, 7, -56, 0x00000000}, - {0x57, 8, 0, 0, 0x0000ffff}, - {0x15, 8, 0, 409, 0x0000dd86}, + {0x15, 6, 0, 443, 0x0000dd86}, {0xb7, 7, 0, 0, 0x00000003}, - {0x55, 8, 0, 1614, 0x00000008}, - {0x0f, 6, 1, 0, 0x00000000}, + {0x55, 6, 0, 1662, 0x00000008}, + {0xf, 8, 1, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000018}, - {0x2d, 1, 9, 1609, 0x00000000}, - {0x71, 3, 6, 12, 0x00000000}, - {0xbf, 1, 3, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, - {0x67, 3, 0, 0, 0x00000018}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x00000018}, + {0x2d, 1, 9, 1657, 0x00000000}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x71, 3, 8, 12, 0x00000000}, + {0x71, 2, 8, 9, 0x00000000}, + {0x15, 2, 0, 1, 0x00000011}, + {0x55, 2, 0, 21, 0x00000006}, + {0x71, 2, 8, 7, 0x00000000}, + {0x71, 4, 8, 6, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x67, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00001f00}, + {0x4f, 5, 2, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x4f, 4, 5, 0, 0x00000000}, + {0x55, 4, 0, 12, 0x00000000}, + {0xbf, 2, 8, 0, 0x00000000}, + {0x7, 2, 0, 0, 0x00000014}, + {0x71, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 2, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 2, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 2, 2, 2, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x4f, 1, 2, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x40000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xb7, 2, 0, 0, 0x00000000}, + {0x65, 4, 0, 1, 0xffffffff}, + {0xb7, 7, 0, 0, 0x2cc681d1}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x598d03a2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb31a0745}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x66340e8a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcc681d15}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x98d03a2b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x31a07456}, + {0x71, 4, 8, 13, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6340e8ad}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xc681d15b}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a07456f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x340e8ade}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x681d15bd}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa07456f6}, + {0x71, 3, 8, 14, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x40e8aded}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x81d15bdb}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x03a2b7b7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x07456f6f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0e8adedf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1d15bdbf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3a2b7b7e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7456f6fd}, + {0x71, 4, 8, 15, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe8adedfa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xd15bdbf4}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x456f6fd3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8adedfa7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2b7b7e9e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x56f6fd3d}, + {0x71, 3, 8, 16, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xadedfa7b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb7b7e9ef}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6f6fd3df}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdedfa7bf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbdbf4f7f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7b7e9eff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6fd3dff}, + {0x71, 4, 8, 17, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xedfa7bfe}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0x71, 3, 8, 18, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x67, 6, 0, 0, 0x00000038}, + {0xc7, 6, 0, 0, 0x00000038}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xf4f7fca2}, + {0x6d, 2, 6, 1, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000040}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe9eff945}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000020}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd3dff28a}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000010}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa7bfe514}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000008}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x4f7fca28}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9eff9450}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3dff28a0}, + {0x71, 5, 8, 19, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7bfe5141}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xf7fca283}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xeff94506}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdff28a0c}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbfe51418}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7fca2831}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff945063}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff28a0c6}, + {0x57, 5, 0, 0, 0x00000001}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfe51418c}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000020}, + {0xc7, 4, 0, 0, 0x00000020}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9450633}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf28a0c67}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe51418ce}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xca28319d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9450633b}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28a0c676}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x51418ced}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa28319db}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x450633b6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8a0c676c}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1418ced8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28319db1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x50633b63}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa0c676c6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x418ced8d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8319db1a}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0633b634}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c676c68}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18ced8d1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x319db1a3}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x633b6347}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc676c68f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8ced8d1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x19db1a3e}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x33b6347d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x676c68fa}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xced8d1f4}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9db1a3e9}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3b6347d2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x76c68fa5}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1194, 0x00000000}, + {0xa7, 3, 0, 0, 0xed8d1f4a}, + {0x5, 0, 0, 1192, 0x00000000}, + {0xf, 8, 1, 0, 0x00000000}, + {0xb7, 7, 0, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x0000002c}, + {0x2d, 1, 9, 1216, 0x00000000}, + {0x61, 2, 8, 8, 0x00000000}, + {0xdc, 2, 0, 0, 0x00000040}, + {0xc7, 2, 0, 0, 0x00000020}, + {0x71, 3, 8, 6, 0x00000000}, + {0x15, 3, 0, 2, 0x00000011}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x55, 3, 0, 12, 0x00000006}, + {0xbf, 3, 8, 0, 0x00000000}, + {0x7, 3, 0, 0, 0x00000028}, + {0x71, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 3, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 3, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 3, 3, 2, 0x00000000}, + {0x67, 3, 0, 0, 0x00000008}, + {0x4f, 1, 3, 0, 0x00000000}, + {0xbf, 4, 2, 0, 0x00000000}, + {0x77, 4, 0, 0, 0x0000001f}, + {0x57, 4, 0, 0, 0x2cc681d1}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x598d03a2}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb31a0745}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x66340e8a}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcc681d15}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x98d03a2b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x31a07456}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6340e8ad}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc681d15b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1a07456f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x340e8ade}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x681d15bd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa07456f6}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x40e8aded}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x81d15bdb}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x03a2b7b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x07456f6f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x0e8adedf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1d15bdbf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3a2b7b7e}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7456f6fd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe8adedfa}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd15bdbf4}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x456f6fd3}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8adedfa7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x15bdbf4f}, + {0x61, 3, 8, 12, 0x00000000}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2b7b7e9e}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56f6fd3d}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 2, 0, 0, 0x00000001}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xadedfa7b}, {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7b7e9ef}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6f6fd3df}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdedfa7bf}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbdbf4f7f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7b7e9eff}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, - {0x71, 3, 6, 13, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf6fd3dff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xedfa7bfe}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, - {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, - {0x71, 3, 6, 14, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4f7fca2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe9eff945}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd3dff28a}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa7bfe514}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4f7fca28}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9eff9450}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, - {0x71, 3, 6, 15, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3dff28a0}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7bfe5141}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf7fca283}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xeff94506}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdff28a0c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbfe51418}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7fca2831}, + {0x61, 4, 8, 16, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff945063}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff28a0c6}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x71, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000038}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0x67, 4, 0, 0, 0x00000018}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0x71, 4, 6, 17, 0x00000000}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0x71, 4, 6, 18, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0x57, 4, 0, 0, 0x00000100}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0x71, 4, 6, 19, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x00000001}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x71, 4, 6, 20, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 21, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0x67, 4, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfe51418c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf9450633}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf28a0c67}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe51418ce}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca28319d}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9450633b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28a0c676}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x51418ced}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa28319db}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x450633b6}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8a0c676c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1418ced8}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28319db1}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x50633b63}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0x71, 3, 6, 22, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa0c676c6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x418ced8d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8319db1a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0633b634}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0c676c68}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x18ced8d1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x319db1a3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x633b6347}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc676c68f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8ced8d1f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x19db1a3e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x33b6347d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x676c68fa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xced8d1f4}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9db1a3e9}, + {0x61, 3, 8, 20, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3b6347d2}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x76c68fa5}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xed8d1f4a}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdb1a3e94}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb6347d28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6c68fa51}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd8d1f4a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb1a3e946}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6347d28d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc68fa51a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d1f4a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a3e946b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x347d28d7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x68fa51ae}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1f4a35c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa3e946b9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x47d28d73}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8fa51ae7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1f4a35cf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3e946b9e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7d28d73c}, + {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa51ae78}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4a35cf1}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe946b9e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd28d73c7}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0x71, 3, 6, 23, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa51ae78e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4a35cf1c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x946b9e38}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x28d73c71}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x51ae78e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35cf1c6}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b9e38d}, + {0x61, 4, 8, 24, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d73c71b}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ae78e36}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1177, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x05, 0, 0, 1175, 0x00000000}, - {0x0f, 6, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x0000002c}, - {0x2d, 1, 9, 1202, 0x00000000}, - {0x61, 4, 6, 8, 0x00000000}, - {0xbf, 1, 4, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35cf1c6c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x6b9e38d9}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd73c71b2}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xae78e364}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5cf1c6c9}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb9e38d92}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x73c71b25}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe78e364b}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcf1c6c96}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9e38d92c}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3c71b259}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x78e364b2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf1c6c964}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe38d92c9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc71b2593}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8e364b27}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1c6c964e}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x38d92c9c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x71b25938}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe364b270}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc6c964e0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8d92c9c0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1b259380}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x364b2700}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6c964e01}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd92c9c03}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb2593807}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x64b2700f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc964e01e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x92c9c03d}, + {0x61, 3, 8, 28, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2593807a}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4b2700f4}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x964e01e8}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x2c9c03d1}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x593807a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb2700f46}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x64e01e8d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc9c03d1a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x93807a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2700f46b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4e01e8d6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9c03d1ad}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3807a35b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x700f46b6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe01e8d6c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc03d1ad9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x807a35b3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x00f46b66}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x01e8d6cc}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x03d1ad99}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x07a35b32}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00002000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x0f46b665}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00001000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1e8d6cca}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000800}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3d1ad994}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000400}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7a35b328}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000200}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf46b6651}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe8d6cca2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000080}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1ad9944}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35b3289}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b66512}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d6cca25}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ad9944a}, + {0x61, 4, 8, 32, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35b32894}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6b665129}, + {0xc7, 4, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd6cca253}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xad9944a7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5b32894f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb665129f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6cca253e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd9944a7d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb32894fb}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x665129f6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcca253ec}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9944a7d9}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x32894fb2}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x65129f65}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca253eca}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x944a7d95}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2894fb2a}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5129f655}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa253ecab}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x44a7d956}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x894fb2ac}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x129f6558}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x253ecab1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4a7d9563}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x94fb2ac7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x29f6558f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x53ecab1e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa7d9563d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4fb2ac7a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9f6558f5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3ecab1ea}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7d9563d5}, + {0x61, 3, 8, 36, 0x00000000}, {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfb2ac7ab}, + {0xdc, 3, 0, 0, 0x00000040}, {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6558f56}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xecab1eac}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xd9563d59}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb2ac7ab2}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6558f564}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcab1eac8}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9563d590}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2ac7ab20}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x61, 4, 6, 12, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x558f5641}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x01000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab1eac83}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00800000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x563d5906}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00400000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac7ab20c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00200000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x58f56418}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00100000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb1eac831}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00080000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x63d59063}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00040000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc7ab20c7}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00020000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8f56418f}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00010000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1eac831e}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00008000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3d59063c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00004000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7ab20c78}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00002000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xf56418f0}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00001000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xeac831e1}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000800}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd59063c2}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000400}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab20c784}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000200}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56418f09}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000100}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac831e12}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x59063c25}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb20c784b}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6418f097}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc831e12f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9063c25f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x20c784be}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x61, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x61, 4, 6, 20, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdb1a3e94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb6347d28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c68fa51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd8d1f4a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1a3e946}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6347d28d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc68fa51a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d1f4a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a3e946b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x347d28d7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x68fa51ae}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1f4a35c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa3e946b9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x47d28d73}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8fa51ae7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1f4a35cf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3e946b9e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d28d73c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa51ae78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4a35cf1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe946b9e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd28d73c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa51ae78e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a35cf1c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x946b9e38}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28d73c71}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51ae78e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35cf1c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b9e38d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d73c71b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ae78e36}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35cf1c6c}, - {0x61, 4, 6, 24, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b9e38d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd73c71b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xae78e364}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5cf1c6c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb9e38d92}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x73c71b25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe78e364b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcf1c6c96}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9e38d92c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c71b259}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x78e364b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf1c6c964}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe38d92c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc71b2593}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8e364b27}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1c6c964e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x38d92c9c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x71b25938}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe364b270}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc6c964e0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d92c9c0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1b259380}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x364b2700}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c964e01}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd92c9c03}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2593807}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64b2700f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc964e01e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x92c9c03d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2593807a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4b2700f4}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x964e01e8}, - {0x61, 4, 6, 28, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2c9c03d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x593807a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2700f46}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64e01e8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc9c03d1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x93807a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2700f46b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4e01e8d6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9c03d1ad}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3807a35b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x700f46b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe01e8d6c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc03d1ad9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x807a35b3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x00f46b66}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x01e8d6cc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03d1ad99}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07a35b32}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0f46b665}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e8d6cca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d1ad994}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7a35b328}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf46b6651}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8d6cca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1ad9944}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35b3289}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b66512}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d6cca25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ad9944a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35b32894}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b665129}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd6cca253}, - {0x61, 4, 6, 32, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xad9944a7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5b32894f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb665129f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6cca253e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9944a7d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb32894fb}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x665129f6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcca253ec}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9944a7d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x32894fb2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x65129f65}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca253eca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x944a7d95}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2894fb2a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5129f655}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa253ecab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x44a7d956}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x894fb2ac}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x129f6558}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x253ecab1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a7d9563}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x94fb2ac7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x29f6558f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x53ecab1e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7d9563d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4fb2ac7a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9f6558f5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3ecab1ea}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d9563d5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfb2ac7ab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6558f56}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xecab1eac}, - {0x61, 4, 6, 36, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9563d59}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2ac7ab2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6558f564}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcab1eac8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9563d590}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2ac7ab20}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x558f5641}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab1eac83}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x563d5906}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac7ab20c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x58f56418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1eac831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63d59063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc7ab20c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f56418f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1eac831e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d59063c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7ab20c78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf56418f0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeac831e1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd59063c2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab20c784}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56418f09}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac831e12}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x418f097c}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x831e12f9}, + {0xbf, 5, 1, 0, 0x00000000}, {0x67, 5, 0, 0, 0x00000020}, {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x59063c25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb20c784b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6418f097}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc831e12f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9063c25f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x20c784be}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418f097c}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x831e12f9}, - {0x71, 4, 6, 40, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 41, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x063c25f3}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c784be7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18f097cf}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31e12f9f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63c25f3f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc784be7f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f097cff}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e12f9fe}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c25f3fc}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x784be7f8}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf097cff0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe12f9fe0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc25f3fc1}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x84be7f83}, + {0xa7, 3, 0, 0, 0x063c25f3}, + {0x6d, 2, 5, 1, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x097cff07}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x12f9fe0f}, - {0x71, 3, 6, 42, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x25f3fc1f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4be7f83f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x97cff07f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2f9fe0fe}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5f3fc1fd}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbe7f83fb}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7cff07f7}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9fe0fee}, - {0x71, 3, 6, 43, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf3fc1fdc}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe7f83fb8}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcff07f70}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9fe0fee1}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3fc1fdc2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7f83fb85}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff07f70a}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe0fee15}, - {0x71, 2, 0, 201, 0x00000000}, - {0x67, 2, 0, 0, 0x00000008}, - {0x71, 3, 0, 200, 0x00000000}, - {0x4f, 2, 3, 0, 0x00000000}, - {0x71, 3, 0, 203, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0x71, 4, 0, 202, 0x00000000}, - {0x4f, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, - {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x00000020}, {0xbf, 2, 1, 0, 0x00000000}, - {0x3f, 2, 3, 0, 0x00000000}, - {0x2f, 2, 3, 0, 0x00000000}, - {0x1f, 1, 2, 0, 0x00000000}, - {0x57, 1, 0, 0, 0x0000000f}, - {0x67, 1, 0, 0, 0x00000002}, - {0x0f, 0, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c784be7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18f097cf}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x31e12f9f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x63c25f3f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc784be7f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8f097cff}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1e12f9fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3c25f3fc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x784be7f8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf097cff0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe12f9fe0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc25f3fc1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x84be7f83}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x097cff07}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x12f9fe0f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x25f3fc1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x4be7f83f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x97cff07f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x2f9fe0fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x5f3fc1fd}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xbe7f83fb}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7cff07f7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9fe0fee}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf3fc1fdc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe7f83fb8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xcff07f70}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9fe0fee1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3fc1fdc2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7f83fb85}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xff07f70a}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xfe0fee15}, + {0x71, 1, 0, 201, 0x00000000}, + {0x67, 1, 0, 0, 0x00000008}, + {0x71, 2, 0, 200, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0x71, 2, 0, 202, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x71, 4, 0, 203, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x4f, 4, 2, 0, 0x00000000}, + {0x4f, 4, 1, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000020}, + {0x77, 3, 0, 0, 0x00000020}, + {0x9f, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x0000000f}, + {0x67, 3, 0, 0, 0x00000002}, + {0xf, 0, 3, 0, 0x00000000}, {0x71, 1, 0, 137, 0x00000000}, {0x67, 1, 0, 0, 0x00000008}, {0x71, 2, 0, 136, 0x00000000}, {0x4f, 1, 2, 0, 0x00000000}, {0x71, 2, 0, 138, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, {0x71, 3, 0, 139, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x67, 3, 0, 0, 0x00000018}, {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, {0x4f, 3, 1, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x7cafe800}, - {0x63, 5, 3, 52, 0x00000000}, + {0x7, 3, 0, 0, 0x7cafe800}, + {0x63, 6, 3, 52, 0x00000000}, {0xb7, 7, 0, 0, 0x00000001}, {0xbf, 0, 7, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v5 0/3] net/tap: build and fix for BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger ` (5 preceding siblings ...) 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger @ 2023-10-31 22:42 ` Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger ` (2 more replies) 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger 7 siblings, 3 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:42 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols. v5 - merge patches into series and fix rebuild Madhuker Mythri (1): net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger (2): net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 + drivers/net/tap/bpf/bpf_api.h | 275 ++ drivers/net/tap/bpf/bpf_elf.h | 53 + drivers/net/tap/bpf/bpf_extract.py | 86 + drivers/net/tap/{ => bpf}/tap_bpf_program.c | 57 +- drivers/net/tap/tap_bpf_insns.h | 2988 ++++++++++--------- drivers/net/tap/tap_rss.h | 2 +- 9 files changed, 2000 insertions(+), 1491 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v5 1/3] net/tap: support infrastructure to build the BPF filter 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger @ 2023-10-31 22:42 ` Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:42 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Move the BPF program related code into a subdirectory. And add a Makefile for building it. The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver. Update the documentation. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 ++ drivers/net/tap/bpf/bpf_api.h | 275 ++++++++++++++++++++ drivers/net/tap/bpf/bpf_elf.h | 53 ++++ drivers/net/tap/bpf/bpf_extract.py | 86 ++++++ drivers/net/tap/{ => bpf}/tap_bpf_program.c | 10 +- drivers/net/tap/tap_rss.h | 2 +- 8 files changed, 444 insertions(+), 12 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (96%) diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst index 07df0d35a2..449e747994 100644 --- a/doc/guides/nics/tap.rst +++ b/doc/guides/nics/tap.rst @@ -256,15 +256,12 @@ C functions under different ELF sections. 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above -3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file:: +3. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file + and extract the resulting instructions into ``tap_bpf_insn.h``. - clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \ - -filetype=obj -o <tap_bpf_program.o> + cd bpf; make - -4. Use a tool that receives two parameters: an eBPF object file and a section -name, and prints out the section as a C array of eBPF instructions. -Embed the C array in your TAP PMD tree. +4. Recompile the TAP PMD. The C arrays are uploaded to the kernel using BPF system calls. diff --git a/drivers/net/tap/bpf/.gitignore b/drivers/net/tap/bpf/.gitignore new file mode 100644 index 0000000000..30a258f1af --- /dev/null +++ b/drivers/net/tap/bpf/.gitignore @@ -0,0 +1 @@ +tap_bpf_program.o diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile new file mode 100644 index 0000000000..e5ae4e1f5a --- /dev/null +++ b/drivers/net/tap/bpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# This file is not built as part of normal DPDK build. +# It is used to generate the eBPF code for TAP RSS. +CLANG=clang +CLANG_OPTS=-O2 +TARGET=../tap_bpf_insns.h + +all: $(TARGET) + +clean: + rm tap_bpf_program.o $(TARGET) + +tap_bpf_program.o: tap_bpf_program.c + $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ + llc -march=bpf -filetype=obj -o $@ + +$(TARGET): bpf_extract.py tap_bpf_program.o + python3 bpf_extract.py tap_bpf_program.o $@ diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h new file mode 100644 index 0000000000..5887d3a851 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_api.h @@ -0,0 +1,275 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** libbpf pin type. */ +enum libbpf_pin_type { + LIBBPF_PIN_NONE, + /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ + LIBBPF_PIN_BY_NAME, +}; + +/** Type helper macros. */ + +#define __uint(name, val) int (*name)[val] +#define __type(name, val) typeof(val) *name +#define __array(name, val) typeof(val) *name[] + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h new file mode 100644 index 0000000000..ea8a11c95c --- /dev/null +++ b/drivers/net/tap/bpf/bpf_elf.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ + struct ____btf_map_##name { \ + type_key key; \ + type_val value; \ + }; \ + struct ____btf_map_##name \ + __attribute__ ((section(".maps." #name), used)) \ + ____btf_map_##name = { } + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py new file mode 100644 index 0000000000..5e1aee38c8 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_extract.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org> + +import argparse +import sys +import struct +from tempfile import TemporaryFile +from elftools.elf.elffile import ELFFile + + +def load_sections(elffile): + """Get sections of interest from ELF""" + result = [] + DATA = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")] + for name, tag in DATA: + section = elffile.get_section_by_name(name) + if section: + insns = struct.iter_unpack('<BBhL', section.data()) + result.append([tag, insns]) + return result + + +def dump_section(name, insns, out): + """Dump the array of BPF instructructions""" + print(f'\nstatic struct bpf_insn {name}[] = {{', file=out) + for bpf in insns: + code = bpf[0] + src = bpf[1] >> 4 + dst = bpf[1] & 0xf + off = bpf[2] + imm = bpf[3] + print(f'\t{{{code:#02x}, {dst:4d}, {src:4d}, {off:8d}, {imm:#010x}}},', + file=out) + print('};', file=out) + + +def parse_args(): + """Parse command line arguments""" + parser = argparse.ArgumentParser() + parser.add_argument("input", + nargs='+', + help="input object file path or '-' for stdin") + parser.add_argument("output", help="output C file path or '-' for stdout") + return parser.parse_args() + + +def open_input(path): + """Open the input file or stdin""" + if path == "-": + temp = TemporaryFile() + temp.write(sys.stdin.buffer.read()) + return temp + return open(path, "rb") + + +def open_output(path): + """Open the output file or stdout""" + if path == "-": + return sys.stdout + return open(path, "w") + + +def write_header(output): + """Write file intro header""" + print("/* SPDX-License-Identifier: BSD-3-Clause", file=output) + print(" * Compiled BPF instructions do not edit", file=output) + print(" */\n", file=output) + print("#include <tap_bpf.h>", file=output) + + +def main(): + '''program main function''' + args = parse_args() + + output = open_output(args.output) + write_header(output) + for path in args.input: + elffile = ELFFile(open_input(path)) + sections = load_sections(elffile) + for name, insns in sections: + dump_section(name, insns, output) + + +if __name__ == "__main__": + main() diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c similarity index 96% rename from drivers/net/tap/tap_bpf_program.c rename to drivers/net/tap/bpf/tap_bpf_program.c index 20c310e5e7..d65021d8a1 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -14,9 +14,10 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> -#include "tap_rss.h" +#include "bpf_api.h" +#include "bpf_elf.h" +#include "../tap_rss.h" /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ @@ -56,6 +57,7 @@ __section("cls_q") int match_q(struct __sk_buff *skb) { __u32 queue = skb->cb[1]; + /* queue is set by tap_flow_bpf_cls_q() before load */ volatile __u32 q = 0xdeadbeef; __u32 match_queue = QUEUE_OFFSET + q; @@ -75,14 +77,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b..dff46a012f 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v5 2/3] net/tap: Fixed RSS algorithm to support fragmented packets 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger @ 2023-10-31 22:42 ` Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:42 UTC (permalink / raw) To: dev; +Cc: Madhuker Mythri, Stephen Hemminger From: Madhuker Mythri <madhuker.mythri@oracle.com> As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues. The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD. So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format. Bugzilla Id: 870 Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c index d65021d8a1..369c7b107f 100644 --- a/drivers/net/tap/bpf/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -19,6 +19,8 @@ #include "bpf_elf.h" #include "../tap_rss.h" +#include "bpf_api.h" + /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ (((b) & 0xff) << 16) | \ @@ -133,6 +135,8 @@ rss_l3_l4(struct __sk_buff *skb) __u8 *key = 0; __u32 len; __u32 queue = 0; + bool mf = 0; + __u16 frag_off = 0; rsskey = map_lookup_elem(&map_keys, &key_idx); if (!rsskey) { @@ -157,6 +161,8 @@ rss_l3_l4(struct __sk_buff *skb) return TC_ACT_OK; __u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr); + __u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off); + __u8 *prot_addr = data + off + offsetof(struct iphdr, protocol); __u8 *src_dst_port = data + off + sizeof(struct iphdr); struct ipv4_l3_l4_tuple v4_tuple = { .src_addr = IPv4(*(src_dst_addr + 0), @@ -167,11 +173,25 @@ rss_l3_l4(struct __sk_buff *skb) *(src_dst_addr + 5), *(src_dst_addr + 6), *(src_dst_addr + 7)), - .sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)), - .dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)), + .sport = 0, + .dport = 0, }; + /** Fetch the L4-payer port numbers only in-case of TCP/UDP + ** and also if the packet is not fragmented. Since fragmented + ** chunks do not have L4 TCP/UDP header. + **/ + if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) { + frag_off = PORT(*(frag_off_addr + 0), + *(frag_off_addr + 1)); + mf = frag_off & 0x2000; + frag_off = frag_off & 0x1fff; + if (mf == 0 && frag_off == 0) { + v4_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v4_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } + } __u8 input_len = sizeof(v4_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) input_len--; @@ -184,6 +204,9 @@ rss_l3_l4(struct __sk_buff *skb) offsetof(struct ipv6hdr, saddr); __u8 *src_dst_port = data + off + sizeof(struct ipv6hdr); + __u8 *next_hdr = data + off + + offsetof(struct ipv6hdr, nexthdr); + struct ipv6_l3_l4_tuple v6_tuple; for (j = 0; j < 4; j++) *((uint32_t *)&v6_tuple.src_addr + j) = @@ -193,10 +216,18 @@ rss_l3_l4(struct __sk_buff *skb) *((uint32_t *)&v6_tuple.dst_addr + j) = __builtin_bswap32(*((uint32_t *) src_dst_addr + 4 + j)); - v6_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v6_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); + + /** Fetch the L4 header port-numbers only if next-header + * is TCP/UDP **/ + if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) { + v6_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v6_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } else { + v6_tuple.sport = 0; + v6_tuple.dport = 0; + } __u8 input_len = sizeof(v6_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v5 3/3] net/tap; rebuild and update the BPF flow program 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger @ 2023-10-31 22:42 ` Stephen Hemminger 2 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-10-31 22:42 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Rebuild with commit c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/tap_bpf_insns.h | 2988 ++++++++++++++++--------------- 1 file changed, 1517 insertions(+), 1471 deletions(-) diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index 1a91bbad13..f75165b70d 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -1,64 +1,62 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2017 Mellanox Technologies, Ltd + * Compiled BPF instructions do not edit */ #include <tap_bpf.h> -/* bpf_insn array matching cls_q section. See tap_bpf_program.c file */ static struct bpf_insn cls_q_insns[] = { {0x61, 2, 1, 52, 0x00000000}, {0x18, 3, 0, 0, 0xdeadbeef}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x63, 10, 3, -4, 0x00000000}, {0xb7, 0, 0, 0, 0x00000000}, {0x61, 3, 10, -4, 0x00000000}, - {0x07, 3, 0, 0, 0x7cafe800}, + {0x7, 3, 0, 0, 0x7cafe800}, {0x67, 3, 0, 0, 0x00000020}, {0x77, 3, 0, 0, 0x00000020}, {0x5d, 2, 3, 4, 0x00000000}, {0xb7, 2, 0, 0, 0x00000000}, {0x63, 1, 2, 52, 0x00000000}, {0x18, 0, 0, 0, 0xffffffff}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, }; -/* bpf_insn array matching l3_l4 section. see tap_bpf_program.c file */ static struct bpf_insn l3_l4_hash_insns[] = { {0xbf, 7, 1, 0, 0x00000000}, - {0x61, 8, 7, 16, 0x00000000}, - {0x61, 6, 7, 76, 0x00000000}, + {0x61, 6, 7, 16, 0x00000000}, + {0x61, 8, 7, 76, 0x00000000}, {0x61, 9, 7, 80, 0x00000000}, {0x18, 1, 0, 0, 0xdeadbeef}, - {0x00, 0, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x63, 10, 1, -4, 0x00000000}, {0xbf, 2, 10, 0, 0x00000000}, - {0x07, 2, 0, 0, 0xfffffffc}, - {0x18, 1, 1, 0, 0x0000cafe}, - {0x00, 0, 0, 0, 0x00000000}, + {0x7, 2, 0, 0, 0xfffffffc}, + {0x18, 1, 0, 0, 0x00000000}, + {0x0, 0, 0, 0, 0x00000000}, {0x85, 0, 0, 0, 0x00000001}, {0x55, 0, 0, 21, 0x00000000}, {0xb7, 1, 0, 0, 0x00000a64}, {0x6b, 10, 1, -16, 0x00000000}, {0x18, 1, 0, 0, 0x69666e6f}, - {0x00, 0, 0, 0, 0x65727567}, + {0x0, 0, 0, 0, 0x65727567}, {0x7b, 10, 1, -24, 0x00000000}, {0x18, 1, 0, 0, 0x6e207369}, - {0x00, 0, 0, 0, 0x6320746f}, + {0x0, 0, 0, 0, 0x6320746f}, {0x7b, 10, 1, -32, 0x00000000}, {0x18, 1, 0, 0, 0x20737372}, - {0x00, 0, 0, 0, 0x2079656b}, + {0x0, 0, 0, 0, 0x2079656b}, {0x7b, 10, 1, -40, 0x00000000}, {0x18, 1, 0, 0, 0x68736168}, - {0x00, 0, 0, 0, 0x203a2928}, + {0x0, 0, 0, 0, 0x203a2928}, {0x7b, 10, 1, -48, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, {0x73, 10, 7, -14, 0x00000000}, {0xbf, 1, 10, 0, 0x00000000}, - {0x07, 1, 0, 0, 0xffffffd0}, + {0x7, 1, 0, 0, 0xffffffd0}, {0xb7, 2, 0, 0, 0x00000023}, {0x85, 0, 0, 0, 0x00000006}, - {0x05, 0, 0, 1632, 0x00000000}, + {0x5, 0, 0, 1680, 0x00000000}, {0xb7, 1, 0, 0, 0x0000000e}, {0x61, 2, 7, 20, 0x00000000}, {0x15, 2, 0, 10, 0x00000000}, @@ -66,1630 +64,1678 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0x55, 2, 0, 8, 0x0000a888}, {0xbf, 2, 7, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000012}, - {0x2d, 1, 9, 1622, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x00000012}, + {0x2d, 1, 9, 1670, 0x00000000}, {0xb7, 1, 0, 0, 0x00000012}, - {0x69, 8, 6, 16, 0x00000000}, + {0x69, 6, 8, 16, 0x00000000}, {0xbf, 7, 2, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x0000ffff}, {0x7b, 10, 7, -56, 0x00000000}, - {0x57, 8, 0, 0, 0x0000ffff}, - {0x15, 8, 0, 409, 0x0000dd86}, + {0x15, 6, 0, 443, 0x0000dd86}, {0xb7, 7, 0, 0, 0x00000003}, - {0x55, 8, 0, 1614, 0x00000008}, - {0x0f, 6, 1, 0, 0x00000000}, + {0x55, 6, 0, 1662, 0x00000008}, + {0xf, 8, 1, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x00000018}, - {0x2d, 1, 9, 1609, 0x00000000}, - {0x71, 3, 6, 12, 0x00000000}, - {0xbf, 1, 3, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, - {0x67, 3, 0, 0, 0x00000018}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x00000018}, + {0x2d, 1, 9, 1657, 0x00000000}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x71, 3, 8, 12, 0x00000000}, + {0x71, 2, 8, 9, 0x00000000}, + {0x15, 2, 0, 1, 0x00000011}, + {0x55, 2, 0, 21, 0x00000006}, + {0x71, 2, 8, 7, 0x00000000}, + {0x71, 4, 8, 6, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x67, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00001f00}, + {0x4f, 5, 2, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x4f, 4, 5, 0, 0x00000000}, + {0x55, 4, 0, 12, 0x00000000}, + {0xbf, 2, 8, 0, 0x00000000}, + {0x7, 2, 0, 0, 0x00000014}, + {0x71, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 2, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 2, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 2, 2, 2, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x4f, 1, 2, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x40000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xb7, 2, 0, 0, 0x00000000}, + {0x65, 4, 0, 1, 0xffffffff}, + {0xb7, 7, 0, 0, 0x2cc681d1}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x598d03a2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb31a0745}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x66340e8a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcc681d15}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x98d03a2b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x31a07456}, + {0x71, 4, 8, 13, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6340e8ad}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xc681d15b}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a07456f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x340e8ade}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x681d15bd}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa07456f6}, + {0x71, 3, 8, 14, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x40e8aded}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x81d15bdb}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x03a2b7b7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x07456f6f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0e8adedf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1d15bdbf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3a2b7b7e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7456f6fd}, + {0x71, 4, 8, 15, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe8adedfa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xd15bdbf4}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x456f6fd3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8adedfa7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2b7b7e9e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x56f6fd3d}, + {0x71, 3, 8, 16, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xadedfa7b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb7b7e9ef}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6f6fd3df}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdedfa7bf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbdbf4f7f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7b7e9eff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6fd3dff}, + {0x71, 4, 8, 17, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xedfa7bfe}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0x71, 3, 8, 18, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x67, 6, 0, 0, 0x00000038}, + {0xc7, 6, 0, 0, 0x00000038}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xf4f7fca2}, + {0x6d, 2, 6, 1, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000040}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe9eff945}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000020}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd3dff28a}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000010}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa7bfe514}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000008}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x4f7fca28}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9eff9450}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3dff28a0}, + {0x71, 5, 8, 19, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7bfe5141}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xf7fca283}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xeff94506}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdff28a0c}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbfe51418}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7fca2831}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff945063}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff28a0c6}, + {0x57, 5, 0, 0, 0x00000001}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfe51418c}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000020}, + {0xc7, 4, 0, 0, 0x00000020}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9450633}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf28a0c67}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe51418ce}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xca28319d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9450633b}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28a0c676}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x51418ced}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa28319db}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x450633b6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8a0c676c}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1418ced8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28319db1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x50633b63}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa0c676c6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x418ced8d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8319db1a}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0633b634}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c676c68}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18ced8d1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x319db1a3}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x633b6347}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc676c68f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8ced8d1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x19db1a3e}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x33b6347d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x676c68fa}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xced8d1f4}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9db1a3e9}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3b6347d2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x76c68fa5}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1194, 0x00000000}, + {0xa7, 3, 0, 0, 0xed8d1f4a}, + {0x5, 0, 0, 1192, 0x00000000}, + {0xf, 8, 1, 0, 0x00000000}, + {0xb7, 7, 0, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x7, 1, 0, 0, 0x0000002c}, + {0x2d, 1, 9, 1216, 0x00000000}, + {0x61, 2, 8, 8, 0x00000000}, + {0xdc, 2, 0, 0, 0x00000040}, + {0xc7, 2, 0, 0, 0x00000020}, + {0x71, 3, 8, 6, 0x00000000}, + {0x15, 3, 0, 2, 0x00000011}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x55, 3, 0, 12, 0x00000006}, + {0xbf, 3, 8, 0, 0x00000000}, + {0x7, 3, 0, 0, 0x00000028}, + {0x71, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 3, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 3, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 3, 3, 2, 0x00000000}, + {0x67, 3, 0, 0, 0x00000008}, + {0x4f, 1, 3, 0, 0x00000000}, + {0xbf, 4, 2, 0, 0x00000000}, + {0x77, 4, 0, 0, 0x0000001f}, + {0x57, 4, 0, 0, 0x2cc681d1}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x598d03a2}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb31a0745}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x66340e8a}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcc681d15}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x98d03a2b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x31a07456}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6340e8ad}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc681d15b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1a07456f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x340e8ade}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x681d15bd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa07456f6}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x40e8aded}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x81d15bdb}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x03a2b7b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x07456f6f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x0e8adedf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1d15bdbf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3a2b7b7e}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7456f6fd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe8adedfa}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd15bdbf4}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x456f6fd3}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8adedfa7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x15bdbf4f}, + {0x61, 3, 8, 12, 0x00000000}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2b7b7e9e}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56f6fd3d}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 2, 0, 0, 0x00000001}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xadedfa7b}, {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7b7e9ef}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6f6fd3df}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdedfa7bf}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbdbf4f7f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7b7e9eff}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, - {0x71, 3, 6, 13, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf6fd3dff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xedfa7bfe}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, - {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, - {0x71, 3, 6, 14, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4f7fca2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe9eff945}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd3dff28a}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa7bfe514}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4f7fca28}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9eff9450}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, - {0x71, 3, 6, 15, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3dff28a0}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7bfe5141}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf7fca283}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xeff94506}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdff28a0c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbfe51418}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7fca2831}, + {0x61, 4, 8, 16, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff945063}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff28a0c6}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x71, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000038}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0x67, 4, 0, 0, 0x00000018}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0x71, 4, 6, 17, 0x00000000}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0x71, 4, 6, 18, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0x57, 4, 0, 0, 0x00000100}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0x71, 4, 6, 19, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x00000001}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x71, 4, 6, 20, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 21, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0x67, 4, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfe51418c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf9450633}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf28a0c67}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe51418ce}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca28319d}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9450633b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28a0c676}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x51418ced}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa28319db}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x450633b6}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8a0c676c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1418ced8}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28319db1}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x50633b63}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0x71, 3, 6, 22, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, - {0xbf, 4, 3, 0, 0x00000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa0c676c6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x418ced8d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8319db1a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0633b634}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0c676c68}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x18ced8d1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x319db1a3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x633b6347}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc676c68f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8ced8d1f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x19db1a3e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x33b6347d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x676c68fa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xced8d1f4}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9db1a3e9}, + {0x61, 3, 8, 20, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3b6347d2}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x76c68fa5}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xed8d1f4a}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdb1a3e94}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb6347d28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6c68fa51}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd8d1f4a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb1a3e946}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6347d28d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc68fa51a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d1f4a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a3e946b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x347d28d7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x68fa51ae}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1f4a35c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa3e946b9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x47d28d73}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8fa51ae7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1f4a35cf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3e946b9e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7d28d73c}, + {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa51ae78}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4a35cf1}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe946b9e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd28d73c7}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0x71, 3, 6, 23, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa51ae78e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4a35cf1c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x946b9e38}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x28d73c71}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x51ae78e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35cf1c6}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b9e38d}, + {0x61, 4, 8, 24, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d73c71b}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ae78e36}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1177, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x05, 0, 0, 1175, 0x00000000}, - {0x0f, 6, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x0000002c}, - {0x2d, 1, 9, 1202, 0x00000000}, - {0x61, 4, 6, 8, 0x00000000}, - {0xbf, 1, 4, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35cf1c6c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x6b9e38d9}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd73c71b2}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xae78e364}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5cf1c6c9}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb9e38d92}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x73c71b25}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe78e364b}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcf1c6c96}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9e38d92c}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3c71b259}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x78e364b2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf1c6c964}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe38d92c9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc71b2593}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8e364b27}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1c6c964e}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x38d92c9c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x71b25938}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe364b270}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc6c964e0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8d92c9c0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1b259380}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x364b2700}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6c964e01}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd92c9c03}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb2593807}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x64b2700f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc964e01e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x92c9c03d}, + {0x61, 3, 8, 28, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2593807a}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4b2700f4}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x964e01e8}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x2c9c03d1}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x593807a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb2700f46}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x64e01e8d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc9c03d1a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x93807a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2700f46b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4e01e8d6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9c03d1ad}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3807a35b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x700f46b6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe01e8d6c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc03d1ad9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x807a35b3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x00f46b66}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x01e8d6cc}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x03d1ad99}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x07a35b32}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00002000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x0f46b665}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00001000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1e8d6cca}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000800}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3d1ad994}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000400}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7a35b328}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000200}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf46b6651}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe8d6cca2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000080}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1ad9944}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35b3289}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b66512}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d6cca25}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ad9944a}, + {0x61, 4, 8, 32, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35b32894}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6b665129}, + {0xc7, 4, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd6cca253}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xad9944a7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5b32894f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb665129f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6cca253e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd9944a7d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb32894fb}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x665129f6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcca253ec}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9944a7d9}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x32894fb2}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x65129f65}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca253eca}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x944a7d95}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2894fb2a}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5129f655}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa253ecab}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x44a7d956}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x894fb2ac}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x129f6558}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x253ecab1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4a7d9563}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x94fb2ac7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x29f6558f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x53ecab1e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa7d9563d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4fb2ac7a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9f6558f5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3ecab1ea}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7d9563d5}, + {0x61, 3, 8, 36, 0x00000000}, {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfb2ac7ab}, + {0xdc, 3, 0, 0, 0x00000040}, {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6558f56}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xecab1eac}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xd9563d59}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb2ac7ab2}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6558f564}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcab1eac8}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9563d590}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2ac7ab20}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x61, 4, 6, 12, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x558f5641}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x01000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab1eac83}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00800000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x563d5906}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00400000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac7ab20c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00200000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x58f56418}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00100000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb1eac831}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00080000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x63d59063}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00040000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc7ab20c7}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00020000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8f56418f}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00010000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1eac831e}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00008000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3d59063c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00004000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7ab20c78}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00002000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xf56418f0}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00001000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xeac831e1}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000800}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd59063c2}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000400}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab20c784}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000200}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56418f09}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000100}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac831e12}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x59063c25}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb20c784b}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6418f097}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc831e12f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9063c25f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x20c784be}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x61, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x61, 4, 6, 20, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdb1a3e94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb6347d28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c68fa51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd8d1f4a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1a3e946}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6347d28d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc68fa51a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d1f4a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a3e946b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x347d28d7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x68fa51ae}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1f4a35c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa3e946b9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x47d28d73}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8fa51ae7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1f4a35cf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3e946b9e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d28d73c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa51ae78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4a35cf1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe946b9e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd28d73c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa51ae78e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a35cf1c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x946b9e38}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28d73c71}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51ae78e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35cf1c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b9e38d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d73c71b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ae78e36}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35cf1c6c}, - {0x61, 4, 6, 24, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b9e38d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd73c71b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xae78e364}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5cf1c6c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb9e38d92}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x73c71b25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe78e364b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcf1c6c96}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9e38d92c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c71b259}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x78e364b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf1c6c964}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe38d92c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc71b2593}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8e364b27}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1c6c964e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x38d92c9c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x71b25938}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe364b270}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc6c964e0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d92c9c0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1b259380}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x364b2700}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c964e01}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd92c9c03}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2593807}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64b2700f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc964e01e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x92c9c03d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2593807a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4b2700f4}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x964e01e8}, - {0x61, 4, 6, 28, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2c9c03d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x593807a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2700f46}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64e01e8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc9c03d1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x93807a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2700f46b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4e01e8d6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9c03d1ad}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3807a35b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x700f46b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe01e8d6c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc03d1ad9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x807a35b3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x00f46b66}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x01e8d6cc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03d1ad99}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07a35b32}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0f46b665}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e8d6cca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d1ad994}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7a35b328}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf46b6651}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8d6cca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1ad9944}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35b3289}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b66512}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d6cca25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ad9944a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35b32894}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b665129}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd6cca253}, - {0x61, 4, 6, 32, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xad9944a7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5b32894f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb665129f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6cca253e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9944a7d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb32894fb}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x665129f6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcca253ec}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9944a7d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x32894fb2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x65129f65}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca253eca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x944a7d95}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2894fb2a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5129f655}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa253ecab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x44a7d956}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x894fb2ac}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x129f6558}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x253ecab1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a7d9563}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x94fb2ac7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x29f6558f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x53ecab1e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7d9563d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4fb2ac7a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9f6558f5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3ecab1ea}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d9563d5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfb2ac7ab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6558f56}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xecab1eac}, - {0x61, 4, 6, 36, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9563d59}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2ac7ab2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6558f564}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcab1eac8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9563d590}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2ac7ab20}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x558f5641}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab1eac83}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x563d5906}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac7ab20c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x58f56418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1eac831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63d59063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc7ab20c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f56418f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1eac831e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d59063c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7ab20c78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf56418f0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeac831e1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd59063c2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab20c784}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56418f09}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac831e12}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x418f097c}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x831e12f9}, + {0xbf, 5, 1, 0, 0x00000000}, {0x67, 5, 0, 0, 0x00000020}, {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x59063c25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb20c784b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6418f097}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc831e12f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9063c25f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x20c784be}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418f097c}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x831e12f9}, - {0x71, 4, 6, 40, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 41, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x063c25f3}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c784be7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18f097cf}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31e12f9f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63c25f3f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc784be7f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f097cff}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e12f9fe}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c25f3fc}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x784be7f8}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf097cff0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe12f9fe0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc25f3fc1}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x84be7f83}, + {0xa7, 3, 0, 0, 0x063c25f3}, + {0x6d, 2, 5, 1, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x097cff07}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x12f9fe0f}, - {0x71, 3, 6, 42, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x25f3fc1f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4be7f83f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x97cff07f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2f9fe0fe}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5f3fc1fd}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbe7f83fb}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7cff07f7}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9fe0fee}, - {0x71, 3, 6, 43, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf3fc1fdc}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe7f83fb8}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcff07f70}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9fe0fee1}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3fc1fdc2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7f83fb85}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff07f70a}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe0fee15}, - {0x71, 2, 0, 201, 0x00000000}, - {0x67, 2, 0, 0, 0x00000008}, - {0x71, 3, 0, 200, 0x00000000}, - {0x4f, 2, 3, 0, 0x00000000}, - {0x71, 3, 0, 203, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0x71, 4, 0, 202, 0x00000000}, - {0x4f, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, - {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x00000020}, {0xbf, 2, 1, 0, 0x00000000}, - {0x3f, 2, 3, 0, 0x00000000}, - {0x2f, 2, 3, 0, 0x00000000}, - {0x1f, 1, 2, 0, 0x00000000}, - {0x57, 1, 0, 0, 0x0000000f}, - {0x67, 1, 0, 0, 0x00000002}, - {0x0f, 0, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c784be7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18f097cf}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x31e12f9f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x63c25f3f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc784be7f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8f097cff}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1e12f9fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3c25f3fc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x784be7f8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf097cff0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe12f9fe0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc25f3fc1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x84be7f83}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x097cff07}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x12f9fe0f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x25f3fc1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x4be7f83f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x97cff07f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x2f9fe0fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x5f3fc1fd}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xbe7f83fb}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7cff07f7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9fe0fee}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf3fc1fdc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe7f83fb8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xcff07f70}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9fe0fee1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3fc1fdc2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7f83fb85}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xff07f70a}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xfe0fee15}, + {0x71, 1, 0, 201, 0x00000000}, + {0x67, 1, 0, 0, 0x00000008}, + {0x71, 2, 0, 200, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0x71, 2, 0, 202, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x71, 4, 0, 203, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x4f, 4, 2, 0, 0x00000000}, + {0x4f, 4, 1, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000020}, + {0x77, 3, 0, 0, 0x00000020}, + {0x9f, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x0000000f}, + {0x67, 3, 0, 0, 0x00000002}, + {0xf, 0, 3, 0, 0x00000000}, {0x71, 1, 0, 137, 0x00000000}, {0x67, 1, 0, 0, 0x00000008}, {0x71, 2, 0, 136, 0x00000000}, {0x4f, 1, 2, 0, 0x00000000}, {0x71, 2, 0, 138, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, {0x71, 3, 0, 139, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x67, 3, 0, 0, 0x00000018}, {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, {0x4f, 3, 1, 0, 0x00000000}, - {0x07, 3, 0, 0, 0x7cafe800}, - {0x63, 5, 3, 52, 0x00000000}, + {0x7, 3, 0, 0, 0x7cafe800}, + {0x63, 6, 3, 52, 0x00000000}, {0xb7, 7, 0, 0, 0x00000001}, {0xbf, 0, 7, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger ` (6 preceding siblings ...) 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger @ 2023-11-01 18:02 ` Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger ` (5 more replies) 7 siblings, 6 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-01 18:02 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols. v6 - cosmetic improvements to extract process add better boilerplate and fix python lint warnings Madhuker Mythri (1): net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger (2): net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 + drivers/net/tap/bpf/bpf_api.h | 275 ++ drivers/net/tap/bpf/bpf_elf.h | 53 + drivers/net/tap/bpf/bpf_extract.py | 86 + drivers/net/tap/{ => bpf}/tap_bpf_program.c | 57 +- drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++--------- drivers/net/tap/tap_rss.h | 2 +- 9 files changed, 1986 insertions(+), 1476 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v6 1/3] net/tap: support infrastructure to build the BPF filter 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger @ 2023-11-01 18:02 ` Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger ` (4 subsequent siblings) 5 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-01 18:02 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Move the BPF program related code into a subdirectory. And add a Makefile for building it. The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here. The standalone build was also broken because by commit ef5baf3486e0 ("replace packed attributes") which introduced __rte_packed into this code. Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver. Update the documentation. Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- doc/guides/nics/tap.rst | 11 +- drivers/net/tap/bpf/.gitignore | 1 + drivers/net/tap/bpf/Makefile | 18 ++ drivers/net/tap/bpf/bpf_api.h | 275 ++++++++++++++++++++ drivers/net/tap/bpf/bpf_elf.h | 53 ++++ drivers/net/tap/bpf/bpf_extract.py | 86 ++++++ drivers/net/tap/{ => bpf}/tap_bpf_program.c | 10 +- drivers/net/tap/tap_rss.h | 2 +- 8 files changed, 444 insertions(+), 12 deletions(-) create mode 100644 drivers/net/tap/bpf/.gitignore create mode 100644 drivers/net/tap/bpf/Makefile create mode 100644 drivers/net/tap/bpf/bpf_api.h create mode 100644 drivers/net/tap/bpf/bpf_elf.h create mode 100644 drivers/net/tap/bpf/bpf_extract.py rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (96%) diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst index 07df0d35a2..449e747994 100644 --- a/doc/guides/nics/tap.rst +++ b/doc/guides/nics/tap.rst @@ -256,15 +256,12 @@ C functions under different ELF sections. 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above -3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file:: +3. Use make to compile `tap_bpf_program.c`` via ``LLVM`` into an object file + and extract the resulting instructions into ``tap_bpf_insn.h``. - clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \ - -filetype=obj -o <tap_bpf_program.o> + cd bpf; make - -4. Use a tool that receives two parameters: an eBPF object file and a section -name, and prints out the section as a C array of eBPF instructions. -Embed the C array in your TAP PMD tree. +4. Recompile the TAP PMD. The C arrays are uploaded to the kernel using BPF system calls. diff --git a/drivers/net/tap/bpf/.gitignore b/drivers/net/tap/bpf/.gitignore new file mode 100644 index 0000000000..30a258f1af --- /dev/null +++ b/drivers/net/tap/bpf/.gitignore @@ -0,0 +1 @@ +tap_bpf_program.o diff --git a/drivers/net/tap/bpf/Makefile b/drivers/net/tap/bpf/Makefile new file mode 100644 index 0000000000..59844c616f --- /dev/null +++ b/drivers/net/tap/bpf/Makefile @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: BSD-3-Clause +# This file is not built as part of normal DPDK build. +# It is used to generate the eBPF code for TAP RSS. +CLANG=clang +CLANG_OPTS=-O2 +TARGET=../tap_bpf_insns.h + +all: $(TARGET) + +clean: + rm tap_bpf_program.o $(TARGET) + +tap_bpf_program.o: tap_bpf_program.c + $(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \ + llc -march=bpf -filetype=obj -o $@ + +$(TARGET): tap_bpf_program.o + python3 bpf_extract.py -stap_bpf_program.c -o $@ $< diff --git a/drivers/net/tap/bpf/bpf_api.h b/drivers/net/tap/bpf/bpf_api.h new file mode 100644 index 0000000000..5887d3a851 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_api.h @@ -0,0 +1,275 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_API__ +#define __BPF_API__ + +/* Note: + * + * This file can be included into eBPF kernel programs. It contains + * a couple of useful helper functions, map/section ABI (bpf_elf.h), + * misc macros and some eBPF specific LLVM built-ins. + */ + +#include <stdint.h> + +#include <linux/pkt_cls.h> +#include <linux/bpf.h> +#include <linux/filter.h> + +#include <asm/byteorder.h> + +#include "bpf_elf.h" + +/** libbpf pin type. */ +enum libbpf_pin_type { + LIBBPF_PIN_NONE, + /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ + LIBBPF_PIN_BY_NAME, +}; + +/** Type helper macros. */ + +#define __uint(name, val) int (*name)[val] +#define __type(name, val) typeof(val) *name +#define __array(name, val) typeof(val) *name[] + +/** Misc macros. */ + +#ifndef __stringify +# define __stringify(X) #X +#endif + +#ifndef __maybe_unused +# define __maybe_unused __attribute__((__unused__)) +#endif + +#ifndef offsetof +# define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) +#endif + +#ifndef likely +# define likely(X) __builtin_expect(!!(X), 1) +#endif + +#ifndef unlikely +# define unlikely(X) __builtin_expect(!!(X), 0) +#endif + +#ifndef htons +# define htons(X) __constant_htons((X)) +#endif + +#ifndef ntohs +# define ntohs(X) __constant_ntohs((X)) +#endif + +#ifndef htonl +# define htonl(X) __constant_htonl((X)) +#endif + +#ifndef ntohl +# define ntohl(X) __constant_ntohl((X)) +#endif + +#ifndef __inline__ +# define __inline__ __attribute__((always_inline)) +#endif + +/** Section helper macros. */ + +#ifndef __section +# define __section(NAME) \ + __attribute__((section(NAME), used)) +#endif + +#ifndef __section_tail +# define __section_tail(ID, KEY) \ + __section(__stringify(ID) "/" __stringify(KEY)) +#endif + +#ifndef __section_xdp_entry +# define __section_xdp_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_cls_entry +# define __section_cls_entry \ + __section(ELF_SECTION_CLASSIFIER) +#endif + +#ifndef __section_act_entry +# define __section_act_entry \ + __section(ELF_SECTION_ACTION) +#endif + +#ifndef __section_lwt_entry +# define __section_lwt_entry \ + __section(ELF_SECTION_PROG) +#endif + +#ifndef __section_license +# define __section_license \ + __section(ELF_SECTION_LICENSE) +#endif + +#ifndef __section_maps +# define __section_maps \ + __section(ELF_SECTION_MAPS) +#endif + +/** Declaration helper macros. */ + +#ifndef BPF_LICENSE +# define BPF_LICENSE(NAME) \ + char ____license[] __section_license = NAME +#endif + +/** Classifier helper */ + +#ifndef BPF_H_DEFAULT +# define BPF_H_DEFAULT -1 +#endif + +/** BPF helper functions for tc. Individual flags are in linux/bpf.h */ + +#ifndef __BPF_FUNC +# define __BPF_FUNC(NAME, ...) \ + (* NAME)(__VA_ARGS__) __maybe_unused +#endif + +#ifndef BPF_FUNC +# define BPF_FUNC(NAME, ...) \ + __BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME +#endif + +/* Map access/manipulation */ +static void *BPF_FUNC(map_lookup_elem, void *map, const void *key); +static int BPF_FUNC(map_update_elem, void *map, const void *key, + const void *value, uint32_t flags); +static int BPF_FUNC(map_delete_elem, void *map, const void *key); + +/* Time access */ +static uint64_t BPF_FUNC(ktime_get_ns); + +/* Debugging */ + +/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless + * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved. + * It would require ____fmt to be made const, which generates a reloc + * entry (non-map). + */ +static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...); + +#ifndef printt +# define printt(fmt, ...) \ + ({ \ + char ____fmt[] = fmt; \ + trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__); \ + }) +#endif + +/* Random numbers */ +static uint32_t BPF_FUNC(get_prandom_u32); + +/* Tail calls */ +static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map, + uint32_t index); + +/* System helpers */ +static uint32_t BPF_FUNC(get_smp_processor_id); +static uint32_t BPF_FUNC(get_numa_node_id); + +/* Packet misc meta data */ +static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb); +static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index); + +static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb); +static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb); +static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb); + +/* Packet redirection */ +static int BPF_FUNC(redirect, int ifindex, uint32_t flags); +static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex, + uint32_t flags); + +/* Packet manipulation */ +static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off, + void *to, uint32_t len); +static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off, + const void *from, uint32_t len, uint32_t flags); + +static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off, + uint32_t from, uint32_t to, uint32_t flags); +static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size, + const void *to, uint32_t to_size, uint32_t seed); +static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum); + +static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type); +static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto, + uint32_t flags); +static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen, + uint32_t flags); + +static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len); + +/* Event notification */ +static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map, + uint64_t index, const void *data, uint32_t size) = + (void *) BPF_FUNC_perf_event_output; + +/* Packet vlan encap/decap */ +static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto, + uint16_t vlan_tci); +static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb); + +/* Packet tunnel encap/decap */ +static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb, + struct bpf_tunnel_key *to, uint32_t size, uint32_t flags); +static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb, + const struct bpf_tunnel_key *from, uint32_t size, + uint32_t flags); + +static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb, + void *to, uint32_t size); +static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb, + const void *from, uint32_t size); + +/** LLVM built-ins, mem*() routines work for constant size */ + +#ifndef lock_xadd +# define lock_xadd(ptr, val) ((void) __sync_fetch_and_add(ptr, val)) +#endif + +#ifndef memset +# define memset(s, c, n) __builtin_memset((s), (c), (n)) +#endif + +#ifndef memcpy +# define memcpy(d, s, n) __builtin_memcpy((d), (s), (n)) +#endif + +#ifndef memmove +# define memmove(d, s, n) __builtin_memmove((d), (s), (n)) +#endif + +/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug + * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also + * this one would generate a reloc entry (non-map), otherwise. + */ +#if 0 +#ifndef memcmp +# define memcmp(a, b, n) __builtin_memcmp((a), (b), (n)) +#endif +#endif + +unsigned long long load_byte(void *skb, unsigned long long off) + asm ("llvm.bpf.load.byte"); + +unsigned long long load_half(void *skb, unsigned long long off) + asm ("llvm.bpf.load.half"); + +unsigned long long load_word(void *skb, unsigned long long off) + asm ("llvm.bpf.load.word"); + +#endif /* __BPF_API__ */ diff --git a/drivers/net/tap/bpf/bpf_elf.h b/drivers/net/tap/bpf/bpf_elf.h new file mode 100644 index 0000000000..ea8a11c95c --- /dev/null +++ b/drivers/net/tap/bpf/bpf_elf.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ +#ifndef __BPF_ELF__ +#define __BPF_ELF__ + +#include <asm/types.h> + +/* Note: + * + * Below ELF section names and bpf_elf_map structure definition + * are not (!) kernel ABI. It's rather a "contract" between the + * application and the BPF loader in tc. For compatibility, the + * section names should stay as-is. Introduction of aliases, if + * needed, are a possibility, though. + */ + +/* ELF section names, etc */ +#define ELF_SECTION_LICENSE "license" +#define ELF_SECTION_MAPS "maps" +#define ELF_SECTION_PROG "prog" +#define ELF_SECTION_CLASSIFIER "classifier" +#define ELF_SECTION_ACTION "action" + +#define ELF_MAX_MAPS 64 +#define ELF_MAX_LICENSE_LEN 128 + +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ +struct bpf_elf_map { + __u32 type; + __u32 size_key; + __u32 size_value; + __u32 max_elem; + __u32 flags; + __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; +}; + +#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val) \ + struct ____btf_map_##name { \ + type_key key; \ + type_val value; \ + }; \ + struct ____btf_map_##name \ + __attribute__ ((section(".maps." #name), used)) \ + ____btf_map_##name = { } + +#endif /* __BPF_ELF__ */ diff --git a/drivers/net/tap/bpf/bpf_extract.py b/drivers/net/tap/bpf/bpf_extract.py new file mode 100644 index 0000000000..b630c42b80 --- /dev/null +++ b/drivers/net/tap/bpf/bpf_extract.py @@ -0,0 +1,86 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org> + +import argparse +import sys +import struct +from tempfile import TemporaryFile +from elftools.elf.elffile import ELFFile + + +def load_sections(elffile): + """Get sections of interest from ELF""" + result = [] + parts = [("cls_q", "cls_q_insns"), ("l3_l4", "l3_l4_hash_insns")] + for name, tag in parts: + section = elffile.get_section_by_name(name) + if section: + insns = struct.iter_unpack('<BBhL', section.data()) + result.append([tag, insns]) + return result + + +def dump_section(name, insns, out): + """Dump the array of BPF instructions""" + print(f'\nstatic struct bpf_insn {name}[] = {{', file=out) + for bpf in insns: + code = bpf[0] + src = bpf[1] >> 4 + dst = bpf[1] & 0xf + off = bpf[2] + imm = bpf[3] + print(f'\t{{{code:#04x}, {dst:4d}, {src:4d}, {off:8d}, {imm:#010x}}},', + file=out) + print('};', file=out) + + +def parse_args(): + """Parse command line arguments""" + parser = argparse.ArgumentParser() + parser.add_argument('-s', + '--source', + type=str, + help="original source file") + parser.add_argument('-o', '--out', type=str, help="output C file path") + parser.add_argument("file", + nargs='+', + help="object file path or '-' for stdin") + return parser.parse_args() + + +def open_input(path): + """Open the file or stdin""" + if path == "-": + temp = TemporaryFile() + temp.write(sys.stdin.buffer.read()) + return temp + return open(path, 'rb') + + +def write_header(out, source): + """Write file intro header""" + print("/* SPDX-License-Identifier: BSD-3-Clause", file=out) + if source: + print(f' * Auto-generated from {source}', file=out) + print(" * This not the original source file. Do NOT edit it.", file=out) + print(" */\n", file=out) + print("#include <tap_bpf.h>", file=out) + + +def main(): + '''program main function''' + args = parse_args() + + with open(args.out, 'w', + encoding="utf-8") if args.out else sys.stdout as out: + write_header(out, args.source) + for path in args.file: + elffile = ELFFile(open_input(path)) + sections = load_sections(elffile) + for name, insns in sections: + dump_section(name, insns, out) + + +if __name__ == "__main__": + main() diff --git a/drivers/net/tap/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c similarity index 96% rename from drivers/net/tap/tap_bpf_program.c rename to drivers/net/tap/bpf/tap_bpf_program.c index 20c310e5e7..d65021d8a1 100644 --- a/drivers/net/tap/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -14,9 +14,10 @@ #include <linux/ipv6.h> #include <linux/if_tunnel.h> #include <linux/filter.h> -#include <linux/bpf.h> -#include "tap_rss.h" +#include "bpf_api.h" +#include "bpf_elf.h" +#include "../tap_rss.h" /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ @@ -56,6 +57,7 @@ __section("cls_q") int match_q(struct __sk_buff *skb) { __u32 queue = skb->cb[1]; + /* queue is set by tap_flow_bpf_cls_q() before load */ volatile __u32 q = 0xdeadbeef; __u32 match_queue = QUEUE_OFFSET + q; @@ -75,14 +77,14 @@ struct ipv4_l3_l4_tuple { __u32 dst_addr; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); struct ipv6_l3_l4_tuple { __u8 src_addr[16]; __u8 dst_addr[16]; __u16 dport; __u16 sport; -} __rte_packed; +} __attribute__((packed)); static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = { 0xd1, 0x81, 0xc6, 0x2c, diff --git a/drivers/net/tap/tap_rss.h b/drivers/net/tap/tap_rss.h index 48c151cf6b..dff46a012f 100644 --- a/drivers/net/tap/tap_rss.h +++ b/drivers/net/tap/tap_rss.h @@ -35,6 +35,6 @@ struct rss_key { __u32 key_size; __u32 queues[TAP_MAX_QUEUES]; __u32 nb_queues; -} __rte_packed; +} __attribute__((packed)); #endif /* _TAP_RSS_H_ */ -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v6 2/3] net/tap: Fixed RSS algorithm to support fragmented packets 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger @ 2023-11-01 18:02 ` Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger ` (3 subsequent siblings) 5 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-01 18:02 UTC (permalink / raw) To: dev; +Cc: Madhuker Mythri, Stephen Hemminger From: Madhuker Mythri <madhuker.mythri@oracle.com> As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues. The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD. So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format. Bugzilla Id: 870 Signed-off-by: Madhuker Mythri <madhuker.mythri@oracle.com> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap/bpf/tap_bpf_program.c b/drivers/net/tap/bpf/tap_bpf_program.c index d65021d8a1..369c7b107f 100644 --- a/drivers/net/tap/bpf/tap_bpf_program.c +++ b/drivers/net/tap/bpf/tap_bpf_program.c @@ -19,6 +19,8 @@ #include "bpf_elf.h" #include "../tap_rss.h" +#include "bpf_api.h" + /** Create IPv4 address */ #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \ (((b) & 0xff) << 16) | \ @@ -133,6 +135,8 @@ rss_l3_l4(struct __sk_buff *skb) __u8 *key = 0; __u32 len; __u32 queue = 0; + bool mf = 0; + __u16 frag_off = 0; rsskey = map_lookup_elem(&map_keys, &key_idx); if (!rsskey) { @@ -157,6 +161,8 @@ rss_l3_l4(struct __sk_buff *skb) return TC_ACT_OK; __u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr); + __u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off); + __u8 *prot_addr = data + off + offsetof(struct iphdr, protocol); __u8 *src_dst_port = data + off + sizeof(struct iphdr); struct ipv4_l3_l4_tuple v4_tuple = { .src_addr = IPv4(*(src_dst_addr + 0), @@ -167,11 +173,25 @@ rss_l3_l4(struct __sk_buff *skb) *(src_dst_addr + 5), *(src_dst_addr + 6), *(src_dst_addr + 7)), - .sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)), - .dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)), + .sport = 0, + .dport = 0, }; + /** Fetch the L4-payer port numbers only in-case of TCP/UDP + ** and also if the packet is not fragmented. Since fragmented + ** chunks do not have L4 TCP/UDP header. + **/ + if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) { + frag_off = PORT(*(frag_off_addr + 0), + *(frag_off_addr + 1)); + mf = frag_off & 0x2000; + frag_off = frag_off & 0x1fff; + if (mf == 0 && frag_off == 0) { + v4_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v4_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } + } __u8 input_len = sizeof(v4_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3)) input_len--; @@ -184,6 +204,9 @@ rss_l3_l4(struct __sk_buff *skb) offsetof(struct ipv6hdr, saddr); __u8 *src_dst_port = data + off + sizeof(struct ipv6hdr); + __u8 *next_hdr = data + off + + offsetof(struct ipv6hdr, nexthdr); + struct ipv6_l3_l4_tuple v6_tuple; for (j = 0; j < 4; j++) *((uint32_t *)&v6_tuple.src_addr + j) = @@ -193,10 +216,18 @@ rss_l3_l4(struct __sk_buff *skb) *((uint32_t *)&v6_tuple.dst_addr + j) = __builtin_bswap32(*((uint32_t *) src_dst_addr + 4 + j)); - v6_tuple.sport = PORT(*(src_dst_port + 0), - *(src_dst_port + 1)); - v6_tuple.dport = PORT(*(src_dst_port + 2), - *(src_dst_port + 3)); + + /** Fetch the L4 header port-numbers only if next-header + * is TCP/UDP **/ + if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) { + v6_tuple.sport = PORT(*(src_dst_port + 0), + *(src_dst_port + 1)); + v6_tuple.dport = PORT(*(src_dst_port + 2), + *(src_dst_port + 3)); + } else { + v6_tuple.sport = 0; + v6_tuple.dport = 0; + } __u8 input_len = sizeof(v6_tuple) / sizeof(__u32); if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3)) -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger @ 2023-11-01 18:02 ` Stephen Hemminger 2023-11-02 15:13 ` Ferruh Yigit 2023-11-02 21:00 ` Ferruh Yigit 2023-11-02 15:11 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Ferruh Yigit ` (2 subsequent siblings) 5 siblings, 2 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-01 18:02 UTC (permalink / raw) To: dev; +Cc: Stephen Hemminger Rebuild with commit c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> --- drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- 1 file changed, 1503 insertions(+), 1456 deletions(-) diff --git a/drivers/net/tap/tap_bpf_insns.h b/drivers/net/tap/tap_bpf_insns.h index 1a91bbad13..53fa76c4e6 100644 --- a/drivers/net/tap/tap_bpf_insns.h +++ b/drivers/net/tap/tap_bpf_insns.h @@ -1,10 +1,10 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2017 Mellanox Technologies, Ltd + * Auto-generated from tap_bpf_program.c + * This not the original source file. Do NOT edit it. */ #include <tap_bpf.h> -/* bpf_insn array matching cls_q section. See tap_bpf_program.c file */ static struct bpf_insn cls_q_insns[] = { {0x61, 2, 1, 52, 0x00000000}, {0x18, 3, 0, 0, 0xdeadbeef}, @@ -23,18 +23,17 @@ static struct bpf_insn cls_q_insns[] = { {0x95, 0, 0, 0, 0x00000000}, }; -/* bpf_insn array matching l3_l4 section. see tap_bpf_program.c file */ static struct bpf_insn l3_l4_hash_insns[] = { {0xbf, 7, 1, 0, 0x00000000}, - {0x61, 8, 7, 16, 0x00000000}, - {0x61, 6, 7, 76, 0x00000000}, + {0x61, 6, 7, 16, 0x00000000}, + {0x61, 8, 7, 76, 0x00000000}, {0x61, 9, 7, 80, 0x00000000}, {0x18, 1, 0, 0, 0xdeadbeef}, {0x00, 0, 0, 0, 0x00000000}, {0x63, 10, 1, -4, 0x00000000}, {0xbf, 2, 10, 0, 0x00000000}, {0x07, 2, 0, 0, 0xfffffffc}, - {0x18, 1, 1, 0, 0x0000cafe}, + {0x18, 1, 0, 0, 0x00000000}, {0x00, 0, 0, 0, 0x00000000}, {0x85, 0, 0, 0, 0x00000001}, {0x55, 0, 0, 21, 0x00000000}, @@ -58,7 +57,7 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0x07, 1, 0, 0, 0xffffffd0}, {0xb7, 2, 0, 0, 0x00000023}, {0x85, 0, 0, 0, 0x00000006}, - {0x05, 0, 0, 1632, 0x00000000}, + {0x05, 0, 0, 1680, 0x00000000}, {0xb7, 1, 0, 0, 0x0000000e}, {0x61, 2, 7, 20, 0x00000000}, {0x15, 2, 0, 10, 0x00000000}, @@ -66,1630 +65,1678 @@ static struct bpf_insn l3_l4_hash_insns[] = { {0x55, 2, 0, 8, 0x0000a888}, {0xbf, 2, 7, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, {0x07, 1, 0, 0, 0x00000012}, - {0x2d, 1, 9, 1622, 0x00000000}, + {0x2d, 1, 9, 1670, 0x00000000}, {0xb7, 1, 0, 0, 0x00000012}, - {0x69, 8, 6, 16, 0x00000000}, + {0x69, 6, 8, 16, 0x00000000}, {0xbf, 7, 2, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x0000ffff}, {0x7b, 10, 7, -56, 0x00000000}, - {0x57, 8, 0, 0, 0x0000ffff}, - {0x15, 8, 0, 409, 0x0000dd86}, + {0x15, 6, 0, 443, 0x0000dd86}, {0xb7, 7, 0, 0, 0x00000003}, - {0x55, 8, 0, 1614, 0x00000008}, - {0x0f, 6, 1, 0, 0x00000000}, + {0x55, 6, 0, 1662, 0x00000008}, + {0x0f, 8, 1, 0, 0x00000000}, {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, {0x07, 1, 0, 0, 0x00000018}, - {0x2d, 1, 9, 1609, 0x00000000}, - {0x71, 3, 6, 12, 0x00000000}, - {0xbf, 1, 3, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, - {0x67, 3, 0, 0, 0x00000018}, + {0x2d, 1, 9, 1657, 0x00000000}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x71, 3, 8, 12, 0x00000000}, + {0x71, 2, 8, 9, 0x00000000}, + {0x15, 2, 0, 1, 0x00000011}, + {0x55, 2, 0, 21, 0x00000006}, + {0x71, 2, 8, 7, 0x00000000}, + {0x71, 4, 8, 6, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x67, 5, 0, 0, 0x00000008}, + {0x57, 5, 0, 0, 0x00001f00}, + {0x4f, 5, 2, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x4f, 4, 5, 0, 0x00000000}, + {0x55, 4, 0, 12, 0x00000000}, + {0xbf, 2, 8, 0, 0x00000000}, + {0x07, 2, 0, 0, 0x00000014}, + {0x71, 4, 2, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 2, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 2, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 2, 2, 2, 0x00000000}, + {0x67, 2, 0, 0, 0x00000008}, + {0x4f, 1, 2, 0, 0x00000000}, {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x40000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xb7, 2, 0, 0, 0x00000000}, + {0x65, 4, 0, 1, 0xffffffff}, + {0xb7, 7, 0, 0, 0x2cc681d1}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x598d03a2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb31a0745}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x66340e8a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcc681d15}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x98d03a2b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x31a07456}, + {0x71, 4, 8, 13, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6340e8ad}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xc681d15b}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a07456f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x340e8ade}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x681d15bd}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa07456f6}, + {0x71, 3, 8, 14, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x40e8aded}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x81d15bdb}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x03a2b7b7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x07456f6f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0e8adedf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1d15bdbf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3a2b7b7e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7456f6fd}, + {0x71, 4, 8, 15, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe8adedfa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xd15bdbf4}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x456f6fd3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8adedfa7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x15bdbf4f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2b7b7e9e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x56f6fd3d}, + {0x71, 3, 8, 16, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xadedfa7b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000038}, + {0xc7, 4, 0, 0, 0x00000038}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb7b7e9ef}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6f6fd3df}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdedfa7bf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbdbf4f7f}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000004}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7b7e9eff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000002}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6fd3dff}, + {0x71, 4, 8, 17, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xedfa7bfe}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0x71, 3, 8, 18, 0x00000000}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x67, 6, 0, 0, 0x00000038}, + {0xc7, 6, 0, 0, 0x00000038}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xf4f7fca2}, + {0x6d, 2, 6, 1, 0x00000000}, + {0xbf, 4, 5, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000040}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe9eff945}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000020}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd3dff28a}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000010}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa7bfe514}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000008}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x4f7fca28}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9eff9450}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3dff28a0}, + {0x71, 5, 8, 19, 0x00000000}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7bfe5141}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000038}, + {0xc7, 3, 0, 0, 0x00000038}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xf7fca283}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 7, 4, 0, 0x00000000}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xeff94506}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xdff28a0c}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xbfe51418}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7fca2831}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000004}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff945063}, + {0xbf, 3, 5, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000002}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xff28a0c6}, + {0x57, 5, 0, 0, 0x00000001}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfe51418c}, + {0xbf, 4, 1, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000020}, + {0xc7, 4, 0, 0, 0x00000020}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xa7, 3, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 3, 7, 0, 0x00000000}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9450633}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf28a0c67}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe51418ce}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xca28319d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9450633b}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28a0c676}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x51418ced}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa28319db}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x450633b6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8a0c676c}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1418ced8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x28319db1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x50633b63}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xa0c676c6}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x418ced8d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8319db1a}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0633b634}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c676c68}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18ced8d1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x319db1a3}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x633b6347}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc676c68f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8ced8d1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x19db1a3e}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x33b6347d}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x676c68fa}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xced8d1f4}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9db1a3e9}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3b6347d2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x76c68fa5}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1194, 0x00000000}, + {0xa7, 3, 0, 0, 0xed8d1f4a}, + {0x05, 0, 0, 1192, 0x00000000}, + {0x0f, 8, 1, 0, 0x00000000}, + {0xb7, 7, 0, 0, 0x00000000}, + {0xbf, 1, 8, 0, 0x00000000}, + {0x07, 1, 0, 0, 0x0000002c}, + {0x2d, 1, 9, 1216, 0x00000000}, + {0x61, 2, 8, 8, 0x00000000}, + {0xdc, 2, 0, 0, 0x00000040}, + {0xc7, 2, 0, 0, 0x00000020}, + {0x71, 3, 8, 6, 0x00000000}, + {0x15, 3, 0, 2, 0x00000011}, + {0xb7, 1, 0, 0, 0x00000000}, + {0x55, 3, 0, 12, 0x00000006}, + {0xbf, 3, 8, 0, 0x00000000}, + {0x07, 3, 0, 0, 0x00000028}, + {0x71, 4, 3, 0, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x71, 1, 3, 1, 0x00000000}, + {0x67, 1, 0, 0, 0x00000010}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 4, 3, 3, 0x00000000}, + {0x4f, 1, 4, 0, 0x00000000}, + {0x71, 3, 3, 2, 0x00000000}, + {0x67, 3, 0, 0, 0x00000008}, + {0x4f, 1, 3, 0, 0x00000000}, + {0xbf, 4, 2, 0, 0x00000000}, + {0x77, 4, 0, 0, 0x0000001f}, + {0x57, 4, 0, 0, 0x2cc681d1}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x598d03a2}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb31a0745}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x66340e8a}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcc681d15}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x98d03a2b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x31a07456}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6340e8ad}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc681d15b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8d03a2b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1a07456f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x340e8ade}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x681d15bd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd03a2b7b}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa07456f6}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x40e8aded}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x81d15bdb}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x03a2b7b7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x07456f6f}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x0e8adedf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1d15bdbf}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3a2b7b7e}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7456f6fd}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xe8adedfa}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd15bdbf4}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xa2b7b7e9}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x456f6fd3}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8adedfa7}, + {0xbf, 3, 2, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x15bdbf4f}, + {0x61, 3, 8, 12, 0x00000000}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2b7b7e9e}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 2, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56f6fd3d}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 2, 0, 0, 0x00000001}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xadedfa7b}, {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x5bdbf4f7}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7b7e9ef}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x20000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6f6fd3df}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x10000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdedfa7bf}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x08000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbdbf4f7f}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x04000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7b7e9eff}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x02000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, - {0x71, 3, 6, 13, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf6fd3dff}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xedfa7bfe}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00800000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdbf4f7fc}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00400000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb7e9eff9}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00200000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6fd3dff2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00100000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdfa7bfe5}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00080000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbf4f7fca}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00040000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7e9eff94}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00020000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, - {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, - {0x71, 3, 6, 14, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfd3dff28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa7bfe51}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4f7fca2}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe9eff945}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd3dff28a}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa7bfe514}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4f7fca28}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9eff9450}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, - {0x71, 3, 6, 15, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3dff28a0}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7bfe5141}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf7fca283}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xeff94506}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xdff28a0c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xbfe51418}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7fca2831}, + {0x61, 4, 8, 16, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff945063}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xff28a0c6}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x71, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000038}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0x67, 4, 0, 0, 0x00000018}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0x71, 4, 6, 17, 0x00000000}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0x71, 4, 6, 18, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0x57, 4, 0, 0, 0x00000100}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0x71, 4, 6, 19, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x00000001}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x71, 4, 6, 20, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 21, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0x67, 4, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfe51418c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xfca28319}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf9450633}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf28a0c67}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe51418ce}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca28319d}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9450633b}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28a0c676}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x51418ced}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa28319db}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x450633b6}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8a0c676c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1418ced8}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x28319db1}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x50633b63}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0x71, 3, 6, 22, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa0c676c6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x418ced8d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8319db1a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0633b634}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x0c676c68}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x18ced8d1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x319db1a3}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x633b6347}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc676c68f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8ced8d1f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x19db1a3e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x33b6347d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x676c68fa}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xced8d1f4}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9db1a3e9}, + {0x61, 3, 8, 20, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3b6347d2}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x76c68fa5}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xed8d1f4a}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0xdb1a3e94}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb6347d28}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6c68fa51}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd8d1f4a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb1a3e946}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6347d28d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc68fa51a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d1f4a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1a3e946b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x347d28d7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x68fa51ae}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1f4a35c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa3e946b9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x47d28d73}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8fa51ae7}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1f4a35cf}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3e946b9e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7d28d73c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xfa51ae78}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf4a35cf1}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe946b9e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd28d73c7}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0x71, 3, 6, 23, 0x00000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa51ae78e}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4a35cf1c}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x946b9e38}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x28d73c71}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x51ae78e3}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35cf1c6}, {0xbf, 4, 3, 0, 0x00000000}, {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b9e38d}, + {0x61, 4, 8, 24, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d73c71b}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ae78e36}, + {0xc7, 4, 0, 0, 0x00000020}, {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1177, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x05, 0, 0, 1175, 0x00000000}, - {0x0f, 6, 1, 0, 0x00000000}, - {0xb7, 7, 0, 0, 0x00000000}, - {0xbf, 1, 6, 0, 0x00000000}, - {0x07, 1, 0, 0, 0x0000002c}, - {0x2d, 1, 9, 1202, 0x00000000}, - {0x61, 4, 6, 8, 0x00000000}, - {0xbf, 1, 4, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000038}, - {0xc7, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x0000001f}, - {0x57, 1, 0, 0, 0x2cc681d1}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35cf1c6c}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0x6b9e38d9}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000040}, - {0xb7, 2, 0, 0, 0x00000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x598d03a2}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd73c71b2}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000020}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb31a0745}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xae78e364}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000010}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x66340e8a}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5cf1c6c9}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000008}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcc681d15}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb9e38d92}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000004}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x98d03a2b}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x73c71b25}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000002}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31a07456}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe78e364b}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6340e8ad}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcf1c6c96}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00800000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9e38d92c}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00400000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3c71b259}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00200000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x78e364b2}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00100000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf1c6c964}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00080000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe38d92c9}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00040000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc71b2593}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00020000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8e364b27}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00010000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1c6c964e}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00008000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc681d15b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x38d92c9c}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00004000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d03a2b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x71b25938}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00002000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a07456f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xe364b270}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00001000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x340e8ade}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc6c964e0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000800}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x681d15bd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x8d92c9c0}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000400}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd03a2b7b}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x1b259380}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000200}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa07456f6}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x364b2700}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x40e8aded}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6c964e01}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd92c9c03}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb2593807}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x64b2700f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xc964e01e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x92c9c03d}, + {0x61, 3, 8, 28, 0x00000000}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2593807a}, + {0xdc, 3, 0, 0, 0x00000040}, + {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4b2700f4}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x964e01e8}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xa7, 5, 0, 0, 0x2c9c03d1}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 5, 7, 0, 0x00000000}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x40000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x593807a3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x20000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xb2700f46}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x10000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x64e01e8d}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x08000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc9c03d1a}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x04000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x93807a35}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x02000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x2700f46b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x01000000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x4e01e8d6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00800000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x9c03d1ad}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00400000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3807a35b}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00200000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x700f46b6}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00100000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe01e8d6c}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00080000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xc03d1ad9}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00040000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x807a35b3}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00020000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x00f46b66}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00010000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x01e8d6cc}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00008000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x03d1ad99}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00004000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x07a35b32}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00002000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x0f46b665}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00001000}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1e8d6cca}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000800}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x3d1ad994}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000400}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x7a35b328}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000200}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xf46b6651}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000100}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xe8d6cca2}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000080}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd1ad9944}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000040}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xa35b3289}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000020}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x46b66512}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000010}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x8d6cca25}, + {0xbf, 4, 3, 0, 0x00000000}, + {0x57, 4, 0, 0, 0x00000008}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x1ad9944a}, + {0x61, 4, 8, 32, 0x00000000}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000004}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x35b32894}, + {0xdc, 4, 0, 0, 0x00000040}, + {0xbf, 6, 3, 0, 0x00000000}, + {0x57, 6, 0, 0, 0x00000002}, + {0x15, 6, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0x6b665129}, + {0xc7, 4, 0, 0, 0x00000020}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 5, 0, 0, 0xd6cca253}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xa7, 7, 0, 0, 0xad9944a7}, + {0x6d, 2, 4, 1, 0x00000000}, + {0xbf, 7, 5, 0, 0x00000000}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x40000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5b32894f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x20000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb665129f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x10000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x6cca253e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x08000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xd9944a7d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x04000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xb32894fb}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x02000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x665129f6}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x01000000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xcca253ec}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x81d15bdb}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9944a7d9}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03a2b7b7}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x32894fb2}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07456f6f}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x65129f65}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0e8adedf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xca253eca}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1d15bdbf}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x944a7d95}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3a2b7b7e}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x2894fb2a}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7456f6fd}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x5129f655}, {0xbf, 3, 4, 0, 0x00000000}, {0x57, 3, 0, 0, 0x00010000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8adedfa}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa253ecab}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00008000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x44a7d956}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00004000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x894fb2ac}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00002000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x129f6558}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00001000}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x253ecab1}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000800}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4a7d9563}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000400}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x94fb2ac7}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000200}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x29f6558f}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000100}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x53ecab1e}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000080}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xa7d9563d}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000040}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x4fb2ac7a}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000020}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x9f6558f5}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000010}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x3ecab1ea}, + {0xbf, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x00000008}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0x7d9563d5}, + {0x61, 3, 8, 36, 0x00000000}, {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0xb7, 3, 0, 0, 0xffffffff}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd15bdbf4}, + {0x57, 5, 0, 0, 0x00000004}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xfb2ac7ab}, + {0xdc, 3, 0, 0, 0x00000040}, {0xbf, 5, 4, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000002}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xf6558f56}, + {0xc7, 3, 0, 0, 0x00000020}, + {0x57, 4, 0, 0, 0x00000001}, + {0x15, 4, 0, 1, 0x00000000}, + {0xa7, 7, 0, 0, 0xecab1eac}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xa7, 4, 0, 0, 0xd9563d59}, + {0x6d, 2, 3, 1, 0x00000000}, + {0xbf, 4, 7, 0, 0x00000000}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa2b7b7e9}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb2ac7ab2}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x456f6fd3}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x79, 6, 10, -56, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6558f564}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8adedfa7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xcab1eac8}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x15bdbf4f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9563d590}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2b7b7e9e}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x2ac7ab20}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56f6fd3d}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xadedfa7b}, - {0x61, 4, 6, 12, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x558f5641}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x01000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab1eac83}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00800000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x563d5906}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00400000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac7ab20c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00200000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x58f56418}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00100000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb1eac831}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00080000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x63d59063}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00040000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc7ab20c7}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00020000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x8f56418f}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00010000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x1eac831e}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00008000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x3d59063c}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00004000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x7ab20c78}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00002000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xf56418f0}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00001000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xeac831e1}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000800}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xd59063c2}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000400}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xab20c784}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000200}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x56418f09}, + {0xbf, 5, 3, 0, 0x00000000}, + {0x57, 5, 0, 0, 0x00000100}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xac831e12}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5bdbf4f7}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x59063c25}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7b7e9ef}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xb20c784b}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6f6fd3df}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x6418f097}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdedfa7bf}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0xc831e12f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbdbf4f7f}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x9063c25f}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7b7e9eff}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x20c784be}, + {0xbf, 5, 3, 0, 0x00000000}, {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6fd3dff}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xedfa7bfe}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdbf4f7fc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb7e9eff9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6fd3dff2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdfa7bfe5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbf4f7fca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7e9eff94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfd3dff28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa7bfe51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4f7fca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe9eff945}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd3dff28a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7bfe514}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4f7fca28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9eff9450}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3dff28a0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7bfe5141}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf7fca283}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeff94506}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdff28a0c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbfe51418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7fca2831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff945063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff28a0c6}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe51418c}, - {0x61, 4, 6, 16, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfca28319}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9450633}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf28a0c67}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe51418ce}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca28319d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9450633b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28a0c676}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51418ced}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa28319db}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x450633b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8a0c676c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1418ced8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28319db1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x50633b63}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa0c676c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418ced8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8319db1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0633b634}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c676c68}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18ced8d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x319db1a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x633b6347}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc676c68f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8ced8d1f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x19db1a3e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x33b6347d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x676c68fa}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xced8d1f4}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9db1a3e9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3b6347d2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x76c68fa5}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xed8d1f4a}, - {0x61, 4, 6, 20, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xdb1a3e94}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb6347d28}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c68fa51}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd8d1f4a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1a3e946}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6347d28d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc68fa51a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d1f4a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1a3e946b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x347d28d7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x68fa51ae}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1f4a35c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa3e946b9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x47d28d73}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8fa51ae7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1f4a35cf}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3e946b9e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d28d73c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfa51ae78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf4a35cf1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe946b9e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd28d73c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa51ae78e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a35cf1c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x946b9e38}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x28d73c71}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x51ae78e3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35cf1c6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b9e38d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d73c71b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ae78e36}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35cf1c6c}, - {0x61, 4, 6, 24, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b9e38d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd73c71b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xae78e364}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5cf1c6c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb9e38d92}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x73c71b25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe78e364b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcf1c6c96}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9e38d92c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c71b259}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x78e364b2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf1c6c964}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe38d92c9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc71b2593}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8e364b27}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1c6c964e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x38d92c9c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x71b25938}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe364b270}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc6c964e0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d92c9c0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1b259380}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x364b2700}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6c964e01}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd92c9c03}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2593807}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64b2700f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc964e01e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x92c9c03d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2593807a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4b2700f4}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x964e01e8}, - {0x61, 4, 6, 28, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2c9c03d1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x593807a3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2700f46}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x64e01e8d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc9c03d1a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x93807a35}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2700f46b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4e01e8d6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9c03d1ad}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3807a35b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x700f46b6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe01e8d6c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc03d1ad9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x807a35b3}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x00f46b66}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x01e8d6cc}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x03d1ad99}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x07a35b32}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0f46b665}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e8d6cca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d1ad994}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7a35b328}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf46b6651}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe8d6cca2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd1ad9944}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa35b3289}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x46b66512}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8d6cca25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1ad9944a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x35b32894}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6b665129}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd6cca253}, - {0x61, 4, 6, 32, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xad9944a7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5b32894f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb665129f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6cca253e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9944a7d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb32894fb}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x665129f6}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcca253ec}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9944a7d9}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x32894fb2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x65129f65}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xca253eca}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x944a7d95}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2894fb2a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5129f655}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa253ecab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x44a7d956}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x894fb2ac}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x129f6558}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x253ecab1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4a7d9563}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x94fb2ac7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x29f6558f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x53ecab1e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000020}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xa7d9563d}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4fb2ac7a}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9f6558f5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3ecab1ea}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7d9563d5}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfb2ac7ab}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf6558f56}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xecab1eac}, - {0x61, 4, 6, 36, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000080}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd9563d59}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000040}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb2ac7ab2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000020}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6558f564}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000010}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcab1eac8}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000008}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9563d590}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000004}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2ac7ab20}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000002}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x558f5641}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000001}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab1eac83}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00008000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x563d5906}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00004000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac7ab20c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00002000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x58f56418}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00001000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb1eac831}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000800}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63d59063}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000400}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc7ab20c7}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000200}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f56418f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00000100}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1eac831e}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00800000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3d59063c}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00400000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7ab20c78}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00200000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf56418f0}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00100000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xeac831e1}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00080000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xd59063c2}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00040000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xab20c784}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00020000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x56418f09}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x00010000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xac831e12}, - {0xbf, 5, 4, 0, 0x00000000}, + {0x15, 5, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x418f097c}, + {0x57, 3, 0, 0, 0x00000001}, + {0x15, 3, 0, 1, 0x00000000}, + {0xa7, 4, 0, 0, 0x831e12f9}, + {0xbf, 5, 1, 0, 0x00000000}, {0x67, 5, 0, 0, 0x00000020}, {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x59063c25}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x40000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xb20c784b}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x20000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x6418f097}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x10000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc831e12f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x08000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9063c25f}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x04000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x20c784be}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x57, 5, 0, 0, 0x02000000}, - {0x1d, 5, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x418f097c}, - {0x57, 4, 0, 0, 0x01000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x831e12f9}, - {0x71, 4, 6, 40, 0x00000000}, - {0x67, 4, 0, 0, 0x00000008}, - {0x71, 5, 6, 41, 0x00000000}, - {0x4f, 4, 5, 0, 0x00000000}, - {0xbf, 5, 4, 0, 0x00000000}, - {0x67, 5, 0, 0, 0x00000030}, - {0xc7, 5, 0, 0, 0x00000020}, - {0x6d, 5, 3, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x063c25f3}, - {0x67, 4, 0, 0, 0x00000010}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x40000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x0c784be7}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x20000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x18f097cf}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x10000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x31e12f9f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x08000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x63c25f3f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x04000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc784be7f}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x02000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x8f097cff}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x01000000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x1e12f9fe}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00800000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3c25f3fc}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00400000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x784be7f8}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00200000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf097cff0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00100000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe12f9fe0}, - {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00080000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xc25f3fc1}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00040000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x84be7f83}, + {0xa7, 3, 0, 0, 0x063c25f3}, + {0x6d, 2, 5, 1, 0x00000000}, {0xbf, 3, 4, 0, 0x00000000}, - {0x57, 3, 0, 0, 0x00020000}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x097cff07}, - {0x57, 4, 0, 0, 0x00010000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x12f9fe0f}, - {0x71, 3, 6, 42, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00008000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x25f3fc1f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00004000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x4be7f83f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00002000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x97cff07f}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00001000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x2f9fe0fe}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000800}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x5f3fc1fd}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000400}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xbe7f83fb}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000200}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7cff07f7}, - {0x57, 3, 0, 0, 0x00000100}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf9fe0fee}, - {0x71, 3, 6, 43, 0x00000000}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000080}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xf3fc1fdc}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000040}, - {0x79, 5, 10, -56, 0x00000000}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xe7f83fb8}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000020}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xcff07f70}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000010}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x9fe0fee1}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000008}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x3fc1fdc2}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000004}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0x7f83fb85}, - {0xbf, 4, 3, 0, 0x00000000}, - {0x57, 4, 0, 0, 0x00000002}, - {0x1d, 4, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xff07f70a}, - {0x57, 3, 0, 0, 0x00000001}, - {0x1d, 3, 2, 1, 0x00000000}, - {0xa7, 1, 0, 0, 0xfe0fee15}, - {0x71, 2, 0, 201, 0x00000000}, - {0x67, 2, 0, 0, 0x00000008}, - {0x71, 3, 0, 200, 0x00000000}, - {0x4f, 2, 3, 0, 0x00000000}, - {0x71, 3, 0, 203, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, - {0x71, 4, 0, 202, 0x00000000}, - {0x4f, 3, 4, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, - {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 1, 0, 0, 0x00000020}, - {0x77, 1, 0, 0, 0x00000020}, {0xbf, 2, 1, 0, 0x00000000}, - {0x3f, 2, 3, 0, 0x00000000}, - {0x2f, 2, 3, 0, 0x00000000}, - {0x1f, 1, 2, 0, 0x00000000}, - {0x57, 1, 0, 0, 0x0000000f}, - {0x67, 1, 0, 0, 0x00000002}, - {0x0f, 0, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x40000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x0c784be7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x20000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x18f097cf}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x10000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x31e12f9f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x08000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x63c25f3f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x04000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc784be7f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x02000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x8f097cff}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x01000000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x1e12f9fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00800000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3c25f3fc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00400000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x784be7f8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00200000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf097cff0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00100000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe12f9fe0}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00080000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xc25f3fc1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00040000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x84be7f83}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00020000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x097cff07}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00010000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x12f9fe0f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00008000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x25f3fc1f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00004000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x4be7f83f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00002000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x97cff07f}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00001000}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x2f9fe0fe}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000800}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x5f3fc1fd}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000400}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xbe7f83fb}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000200}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7cff07f7}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000100}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf9fe0fee}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000080}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xf3fc1fdc}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000040}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xe7f83fb8}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000020}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xcff07f70}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000010}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x9fe0fee1}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000008}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x3fc1fdc2}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000004}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0x7f83fb85}, + {0xbf, 2, 1, 0, 0x00000000}, + {0x57, 2, 0, 0, 0x00000002}, + {0x15, 2, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xff07f70a}, + {0x57, 1, 0, 0, 0x00000001}, + {0x15, 1, 0, 1, 0x00000000}, + {0xa7, 3, 0, 0, 0xfe0fee15}, + {0x71, 1, 0, 201, 0x00000000}, + {0x67, 1, 0, 0, 0x00000008}, + {0x71, 2, 0, 200, 0x00000000}, + {0x4f, 1, 2, 0, 0x00000000}, + {0x71, 2, 0, 202, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, + {0x71, 4, 0, 203, 0x00000000}, + {0x67, 4, 0, 0, 0x00000018}, + {0x4f, 4, 2, 0, 0x00000000}, + {0x4f, 4, 1, 0, 0x00000000}, + {0x67, 3, 0, 0, 0x00000020}, + {0x77, 3, 0, 0, 0x00000020}, + {0x9f, 3, 4, 0, 0x00000000}, + {0x57, 3, 0, 0, 0x0000000f}, + {0x67, 3, 0, 0, 0x00000002}, + {0x0f, 0, 3, 0, 0x00000000}, {0x71, 1, 0, 137, 0x00000000}, {0x67, 1, 0, 0, 0x00000008}, {0x71, 2, 0, 136, 0x00000000}, {0x4f, 1, 2, 0, 0x00000000}, {0x71, 2, 0, 138, 0x00000000}, + {0x67, 2, 0, 0, 0x00000010}, {0x71, 3, 0, 139, 0x00000000}, - {0x67, 3, 0, 0, 0x00000008}, + {0x67, 3, 0, 0, 0x00000018}, {0x4f, 3, 2, 0, 0x00000000}, - {0x67, 3, 0, 0, 0x00000010}, {0x4f, 3, 1, 0, 0x00000000}, {0x07, 3, 0, 0, 0x7cafe800}, - {0x63, 5, 3, 52, 0x00000000}, + {0x63, 6, 3, 52, 0x00000000}, {0xb7, 7, 0, 0, 0x00000001}, {0xbf, 0, 7, 0, 0x00000000}, {0x95, 0, 0, 0, 0x00000000}, -- 2.41.0 ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-01 18:02 ` [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger @ 2023-11-02 15:13 ` Ferruh Yigit 2023-11-02 16:53 ` Stephen Hemminger 2023-11-02 21:00 ` Ferruh Yigit 1 sibling, 1 reply; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 15:13 UTC (permalink / raw) To: Stephen Hemminger, dev On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > Rebuild with commit > c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- > 1 file changed, 1503 insertions(+), 1456 deletions(-) Is how to generate this header documented somewhere, I missed it? Thanks, ferruh ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-02 15:13 ` Ferruh Yigit @ 2023-11-02 16:53 ` Stephen Hemminger 2023-11-02 18:25 ` Ferruh Yigit 0 siblings, 1 reply; 34+ messages in thread From: Stephen Hemminger @ 2023-11-02 16:53 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev On Thu, 2 Nov 2023 15:13:57 +0000 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > > Rebuild with commit > > c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) > > > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > > --- > > drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- > > 1 file changed, 1503 insertions(+), 1456 deletions(-) > > Is how to generate this header documented somewhere, I missed it? > > Thanks, > ferruh See first patch, it updates process (new tool) and documentation. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-02 16:53 ` Stephen Hemminger @ 2023-11-02 18:25 ` Ferruh Yigit 0 siblings, 0 replies; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 18:25 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev On 11/2/2023 4:53 PM, Stephen Hemminger wrote: > On Thu, 2 Nov 2023 15:13:57 +0000 > Ferruh Yigit <ferruh.yigit@amd.com> wrote: > >> On 11/1/2023 6:02 PM, Stephen Hemminger wrote: >>> Rebuild with commit >>> c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) >>> >>> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> >>> --- >>> drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- >>> 1 file changed, 1503 insertions(+), 1456 deletions(-) >> >> Is how to generate this header documented somewhere, I missed it? >> >> Thanks, >> ferruh > > See first patch, it updates process (new tool) and documentation. > Saw it now, thanks. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-01 18:02 ` [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2023-11-02 15:13 ` Ferruh Yigit @ 2023-11-02 21:00 ` Ferruh Yigit 2023-11-02 21:56 ` Stephen Hemminger 1 sibling, 1 reply; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 21:00 UTC (permalink / raw) To: Stephen Hemminger, dev On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > Rebuild with commit > c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > --- > drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- > 1 file changed, 1503 insertions(+), 1456 deletions(-) > When I generate the header file, it is different than the one in this commit, is this expected? And what would you think to merge this patch with previous one, since this is generated with the changes in previous patch, keeping them both in same patch looks reasonable to me. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program 2023-11-02 21:00 ` Ferruh Yigit @ 2023-11-02 21:56 ` Stephen Hemminger 0 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-02 21:56 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev On Thu, 2 Nov 2023 21:00:31 +0000 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > > Rebuild with commit > > c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31) > > > > Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> > > --- > > drivers/net/tap/tap_bpf_insns.h | 2959 ++++++++++++++++--------------- > > 1 file changed, 1503 insertions(+), 1456 deletions(-) > > > > When I generate the header file, it is different than the one in this > commit, is this expected? > Output depends on compiler version of clang. I built using clang 16.0.6 on Fedora. > And what would you think to merge this patch with previous one, since > this is generated with the changes in previous patch, keeping them both > in same patch looks reasonable to me. That would make sense ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger ` (2 preceding siblings ...) 2023-11-01 18:02 ` [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger @ 2023-11-02 15:11 ` Ferruh Yigit 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 15:21 ` Ferruh Yigit 2023-11-03 3:57 ` Ferruh Yigit 5 siblings, 1 reply; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 15:11 UTC (permalink / raw) To: Stephen Hemminger, dev; +Cc: techboard On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > Update the documentation and tools to build the BPF program used by > tap device. And apply fix to the RSS algorithm to correctly > handle non-IP protocols. > > v6 - cosmetic improvements to extract process > add better boilerplate and fix python lint warnings > > Madhuker Mythri (1): > net/tap: Fixed RSS algorithm to support fragmented packets > > Stephen Hemminger (2): > net/tap: support infrastructure to build the BPF filter > net/tap; rebuild and update the BPF flow program > Thanks Stephen for fixing this. But considering it was broken for a while and nobody complained, and initial developers seems lost interest and it is relatively hard code to maintain, do we still want to keep this support. Can we probe again motivation and benefit of eBPF support in tap PMD, and if it is still relevant? ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-02 15:11 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Ferruh Yigit @ 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 18:35 ` Ferruh Yigit 0 siblings, 2 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-02 16:52 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev, techboard On Thu, 2 Nov 2023 15:11:10 +0000 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > > Stephen Hemminger (2): > > net/tap: support infrastructure to build the BPF filter > > net/tap; rebuild and update the BPF flow program > > > > Thanks Stephen for fixing this. > > > But considering it was broken for a while and nobody complained, and > initial developers seems lost interest and it is relatively hard code to > maintain, do we still want to keep this support. > > Can we probe again motivation and benefit of eBPF support in tap PMD, > and if it is still relevant? The use case was allowing an rte_flow match to a set of queues and have the BPF program do RSS across set of rte_flow queues. Simple non-rte_flow usage of TAP doesn't need this in most cases. The kernel will do RSS already to multi-queue tap. The motivation was to allow use of rte_flow in the failsafe/tap/mlx model. This is the legacy model for use in Hyper-V/Azure. Not aware of any application using this. The bug fix came from Oracle, perhaps they have more context. This fix set came from looking at old unmerged but ok patches in patchwork. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-02 16:52 ` Stephen Hemminger @ 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 18:35 ` Ferruh Yigit 1 sibling, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-02 16:52 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev, techboard On Thu, 2 Nov 2023 15:11:10 +0000 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > > Stephen Hemminger (2): > > net/tap: support infrastructure to build the BPF filter > > net/tap; rebuild and update the BPF flow program > > > > Thanks Stephen for fixing this. > > > But considering it was broken for a while and nobody complained, and > initial developers seems lost interest and it is relatively hard code to > maintain, do we still want to keep this support. > > Can we probe again motivation and benefit of eBPF support in tap PMD, > and if it is still relevant? The use case was allowing an rte_flow match to a set of queues and have the BPF program do RSS across set of rte_flow queues. Simple non-rte_flow usage of TAP doesn't need this in most cases. The kernel will do RSS already to multi-queue tap. The motivation was to allow use of rte_flow in the failsafe/tap/mlx model. This is the legacy model for use in Hyper-V/Azure. Not aware of any application using this. The bug fix came from Oracle, perhaps they have more context. This fix set came from looking at old unmerged but ok patches in patchwork. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 16:52 ` Stephen Hemminger @ 2023-11-02 18:35 ` Ferruh Yigit 2023-11-02 18:39 ` Stephen Hemminger 1 sibling, 1 reply; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 18:35 UTC (permalink / raw) To: Stephen Hemminger; +Cc: dev, techboard On 11/2/2023 4:52 PM, Stephen Hemminger wrote: > On Thu, 2 Nov 2023 15:11:10 +0000 > Ferruh Yigit <ferruh.yigit@amd.com> wrote: > >>> Stephen Hemminger (2): >>> net/tap: support infrastructure to build the BPF filter >>> net/tap; rebuild and update the BPF flow program >>> >> >> Thanks Stephen for fixing this. >> >> >> But considering it was broken for a while and nobody complained, and >> initial developers seems lost interest and it is relatively hard code to >> maintain, do we still want to keep this support. >> >> Can we probe again motivation and benefit of eBPF support in tap PMD, >> and if it is still relevant? > > > The use case was allowing an rte_flow match to a set of queues and have > the BPF program do RSS across set of rte_flow queues. > Simple non-rte_flow usage of TAP doesn't need this in most cases. > The kernel will do RSS already to multi-queue tap. > > The motivation was to allow use of rte_flow in the failsafe/tap/mlx model. > This is the legacy model for use in Hyper-V/Azure. Not aware of any > application using this. > The bug fix came from Oracle, perhaps they have more context. > > This fix set came from looking at old unmerged but ok patches in patchwork. > Thanks for clarification. I am for getting this set and at least fix tap ebpf for this release. But does it make sense to discuss deprecation of this feature, if there is no more usecase anymore perhaps we can plan removing it? ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-02 18:35 ` Ferruh Yigit @ 2023-11-02 18:39 ` Stephen Hemminger 0 siblings, 0 replies; 34+ messages in thread From: Stephen Hemminger @ 2023-11-02 18:39 UTC (permalink / raw) To: Ferruh Yigit; +Cc: dev, techboard On Thu, 2 Nov 2023 18:35:08 +0000 Ferruh Yigit <ferruh.yigit@amd.com> wrote: > > The motivation was to allow use of rte_flow in the failsafe/tap/mlx model. > > This is the legacy model for use in Hyper-V/Azure. Not aware of any > > application using this. > > The bug fix came from Oracle, perhaps they have more context. > > > > This fix set came from looking at old unmerged but ok patches in patchwork. > > > > Thanks for clarification. > > I am for getting this set and at least fix tap ebpf for this release. > > > But does it make sense to discuss deprecation of this feature, if there > is no more usecase anymore perhaps we can plan removing it? Proving a negative is impossible, especially since most users and NFV do not read this list. ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger ` (3 preceding siblings ...) 2023-11-02 15:11 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Ferruh Yigit @ 2023-11-02 15:21 ` Ferruh Yigit 2023-11-03 3:57 ` Ferruh Yigit 5 siblings, 0 replies; 34+ messages in thread From: Ferruh Yigit @ 2023-11-02 15:21 UTC (permalink / raw) To: Ophir Munk, Pascal Mazon; +Cc: Thomas Monjalon, Stephen Hemminger, dev On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > Update the documentation and tools to build the BPF program used by > tap device. And apply fix to the RSS algorithm to correctly > handle non-IP protocols. > > v6 - cosmetic improvements to extract process > add better boilerplate and fix python lint warnings > > Madhuker Mythri (1): > net/tap: Fixed RSS algorithm to support fragmented packets > > Stephen Hemminger (2): > net/tap: support infrastructure to build the BPF filter > net/tap; rebuild and update the BPF flow program > Hi Ophir, Pascal, Is there any chance you can help testing this patchset? Thanks, ferruh ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v6 0/3] net/tap: build and fix for BPF program 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger ` (4 preceding siblings ...) 2023-11-02 15:21 ` Ferruh Yigit @ 2023-11-03 3:57 ` Ferruh Yigit 5 siblings, 0 replies; 34+ messages in thread From: Ferruh Yigit @ 2023-11-03 3:57 UTC (permalink / raw) To: Stephen Hemminger, dev On 11/1/2023 6:02 PM, Stephen Hemminger wrote: > Update the documentation and tools to build the BPF program used by > tap device. And apply fix to the RSS algorithm to correctly > handle non-IP protocols. > > v6 - cosmetic improvements to extract process > add better boilerplate and fix python lint warnings > > Madhuker Mythri (1): > net/tap: Fixed RSS algorithm to support fragmented packets > > Stephen Hemminger (2): > net/tap: support infrastructure to build the BPF filter > net/tap; rebuild and update the BPF flow program > For series, Acked-by: Ferruh Yigit <ferruh.yigit@amd.com> Patch 2/3 & 3/3 squashed while merging, Series applied to dpdk-next-net/main, thanks. ^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2023-11-03 3:57 UTC | newest] Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-07-16 21:25 [RFC] MAINTAINERS: add status information Stephen Hemminger 2023-07-19 16:07 ` [PATCH v2] " Stephen Hemminger 2023-07-20 17:21 ` [PATCH v3] " Stephen Hemminger 2023-07-20 17:45 ` [PATCH v2 ] tap: fix build of TAP BPF program Stephen Hemminger 2023-07-20 23:25 ` [PATCH v3] " Stephen Hemminger 2023-07-21 13:05 ` Ferruh Yigit 2023-07-21 15:43 ` Stephen Hemminger 2023-07-23 2:21 ` Stephen Hemminger 2023-07-26 16:31 ` Stephen Hemminger 2023-07-22 16:32 ` [PATCH v4] " Stephen Hemminger 2023-10-31 22:08 ` [PATCH 0/3] net/tap: update and fix the " Stephen Hemminger 2023-10-31 22:08 ` [PATCH 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-10-31 22:08 ` [PATCH 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger 2023-10-31 22:08 ` [PATCH 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger 2023-10-31 22:42 ` [PATCH v5 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 1/3] net/tap: support infrastructure to build the BPF filter Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 2/3] net/tap: Fixed RSS algorithm to support fragmented packets Stephen Hemminger 2023-11-01 18:02 ` [PATCH v6 3/3] net/tap; rebuild and update the BPF flow program Stephen Hemminger 2023-11-02 15:13 ` Ferruh Yigit 2023-11-02 16:53 ` Stephen Hemminger 2023-11-02 18:25 ` Ferruh Yigit 2023-11-02 21:00 ` Ferruh Yigit 2023-11-02 21:56 ` Stephen Hemminger 2023-11-02 15:11 ` [PATCH v6 0/3] net/tap: build and fix for BPF program Ferruh Yigit 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 16:52 ` Stephen Hemminger 2023-11-02 18:35 ` Ferruh Yigit 2023-11-02 18:39 ` Stephen Hemminger 2023-11-02 15:21 ` Ferruh Yigit 2023-11-03 3:57 ` Ferruh Yigit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).