diff --git a/examples/fdpicxip/CMakeLists.txt b/examples/fdpicxip/CMakeLists.txt new file mode 100644 index 00000000000..2af0fc4a897 --- /dev/null +++ b/examples/fdpicxip/CMakeLists.txt @@ -0,0 +1,25 @@ +# ############################################################################## +# apps/examples/fdpicxip/CMakeLists.txt +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more contributor +# license agreements. See the NOTICE file distributed with this work for +# additional information regarding copyright ownership. The ASF licenses this +# file to you under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# +# ############################################################################## + +if(CONFIG_EXAMPLES_FDPICXIP) + nuttx_add_application(NAME fdpicxip SRCS fdpicxip_main.c) +endif() diff --git a/examples/fdpicxip/Kconfig b/examples/fdpicxip/Kconfig new file mode 100644 index 00000000000..6de10e005bd --- /dev/null +++ b/examples/fdpicxip/Kconfig @@ -0,0 +1,39 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +config EXAMPLES_FDPICXIP + tristate "FDPIC modules executed in place from xipfs demo" + depends on FS_XIPFS && FDPIC && LIBC_EXECFUNCS + default n + ---help--- + Write FDPIC modules into xipfs at run time, the way a download + would, then run them. Their text is executed directly out of + flash and shared between concurrent instances, while each + instance gets its own data. + + Subcommands: + + qsort one self-contained module, two instances + solib a shared library across two instances + cxx the same in C++, checking global constructors ran + jmprel a module whose imports are all in DT_JMPREL + + With no subcommand, qsort runs. + + The modules are embedded in the image as C headers. Their + sources are in modules/, which rebuilds the headers on an + explicit 'make regen': linking one needs arm-uclinuxfdpiceabi + binutils, which this build does not. + + This demonstrates; it does not assert. For the assertions see + the fdpic and reject sections of CONFIG_TESTING_FS_XIPFS. + +if EXAMPLES_FDPICXIP + +config EXAMPLES_FDPICXIP_MOUNTPT + string "xipfs mountpoint" + default "/mnt/xipfs" + +endif # EXAMPLES_FDPICXIP diff --git a/examples/fdpicxip/Make.defs b/examples/fdpicxip/Make.defs new file mode 100644 index 00000000000..88acd75f819 --- /dev/null +++ b/examples/fdpicxip/Make.defs @@ -0,0 +1,25 @@ +############################################################################ +# apps/examples/fdpicxip/Make.defs +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +ifneq ($(CONFIG_EXAMPLES_FDPICXIP),) +CONFIGURED_APPS += $(APPDIR)/examples/fdpicxip +endif diff --git a/examples/fdpicxip/Makefile b/examples/fdpicxip/Makefile new file mode 100644 index 00000000000..05f90116c84 --- /dev/null +++ b/examples/fdpicxip/Makefile @@ -0,0 +1,37 @@ +############################################################################ +# apps/examples/fdpicxip/Makefile +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +include $(APPDIR)/Make.defs + +# FDPIC modules executed in place from xipfs. The modules are embedded as +# headers, built from the sources in modules/ by an explicit 'make regen' +# there: linking one needs arm-uclinuxfdpiceabi binutils, which this build +# does not. + +MAINSRC = fdpicxip_main.c + +PROGNAME = fdpicxip +PRIORITY = SCHED_PRIORITY_DEFAULT +STACKSIZE = $(CONFIG_DEFAULT_TASK_STACKSIZE) +MODULE = $(CONFIG_EXAMPLES_FDPICXIP) + +include $(APPDIR)/Application.mk diff --git a/examples/fdpicxip/cxxuser_bin.h b/examples/fdpicxip/cxxuser_bin.h new file mode 100644 index 00000000000..8baafab001a --- /dev/null +++ b/examples/fdpicxip/cxxuser_bin.h @@ -0,0 +1,400 @@ +/**************************************************************************** + * apps/examples/fdpicxip/cxxuser_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from cxxuser.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_cxxuser[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x81, 0x04, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x06, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf0, 0x06, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf4, 0x06, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x61, 0x74, + 0x6f, 0x69, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x00, 0x73, 0x79, + 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x61, + 0x64, 0x64, 0x00, 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x6e, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, + 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x00, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x6c, 0x69, + 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x73, 0x6f, 0x00, 0x5f, 0x5f, + 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xa0, 0x17, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0xa8, 0x17, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0xb0, 0x17, 0x00, 0x00, 0xa4, 0x09, 0x00, 0x00, + 0xb8, 0x17, 0x00, 0x00, 0xa4, 0x0a, 0x00, 0x00, 0xc0, 0x17, 0x00, 0x00, + 0xa4, 0x0b, 0x00, 0x00, 0xc8, 0x17, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0xd0, 0x17, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0xd8, 0x17, 0x00, 0x00, + 0xa4, 0x11, 0x00, 0x00, 0xe0, 0x17, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, + 0xe8, 0x17, 0x00, 0x00, 0xa4, 0x13, 0x00, 0x00, 0xf0, 0x17, 0x00, 0x00, + 0xa4, 0x14, 0x00, 0x00, 0xf8, 0x17, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x4c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x54, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x5c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x64, 0x00, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x45, 0x01, 0x28, 0x4c, 0x46, 0x80, 0x46, 0x0f, 0x46, + 0x89, 0xb0, 0x40, 0xf3, 0x8e, 0x80, 0x48, 0x68, 0xff, 0xf7, 0xcc, 0xff, + 0xb8, 0xf1, 0x02, 0x0f, 0xa1, 0x46, 0x06, 0x46, 0x03, 0xd0, 0xb8, 0x68, + 0xff, 0xf7, 0xd8, 0xff, 0xa1, 0x46, 0x52, 0x4b, 0x4f, 0x4d, 0x59, 0xf8, + 0x03, 0x30, 0x1b, 0x68, 0xab, 0x42, 0x7c, 0xd1, 0xdf, 0xf8, 0x3c, 0xa1, + 0xfa, 0x44, 0xff, 0xf7, 0x8f, 0xff, 0xa1, 0x46, 0x00, 0x28, 0x78, 0xd0, + 0x4c, 0x4b, 0x7b, 0x44, 0x49, 0x4a, 0x59, 0xf8, 0x02, 0x20, 0x12, 0x79, + 0x00, 0x2a, 0x73, 0xd0, 0x49, 0x4a, 0x7a, 0x44, 0x49, 0x49, 0xcd, 0xe9, + 0x00, 0x32, 0x06, 0x20, 0x53, 0x46, 0x32, 0x46, 0x79, 0x44, 0xff, 0xf7, + 0x97, 0xff, 0xa1, 0x46, 0x40, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x68, + 0x5d, 0x1b, 0x18, 0xbf, 0x01, 0x25, 0xff, 0xf7, 0x6f, 0xff, 0xa1, 0x46, + 0x08, 0xb9, 0x45, 0xf0, 0x02, 0x05, 0x3a, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x1b, 0x79, 0x0b, 0xb9, 0x45, 0xf0, 0x04, 0x05, 0x4f, 0xf0, 0x03, 0x0a, + 0x34, 0x4b, 0x03, 0x93, 0x30, 0x46, 0xff, 0xf7, 0x35, 0xff, 0x03, 0x98, + 0xa1, 0x46, 0xff, 0xf7, 0x45, 0xff, 0xba, 0xf1, 0x01, 0x0a, 0xa1, 0x46, + 0xf4, 0xd1, 0xff, 0xf7, 0x49, 0xff, 0x06, 0xeb, 0x46, 0x0a, 0xa1, 0x46, + 0x50, 0x45, 0x18, 0xbf, 0x45, 0xf0, 0x08, 0x05, 0xff, 0xf7, 0x40, 0xff, + 0xa1, 0x46, 0x03, 0x46, 0x00, 0x2d, 0x38, 0xd1, 0x2c, 0x4a, 0x7a, 0x44, + 0x2c, 0x49, 0xcd, 0xe9, 0x00, 0xa2, 0x06, 0x20, 0x32, 0x46, 0x79, 0x44, + 0xff, 0xf7, 0x5a, 0xff, 0xb8, 0xf1, 0x03, 0x0f, 0xa1, 0x46, 0x1a, 0xdd, + 0xff, 0x68, 0xc7, 0xb1, 0x26, 0x4a, 0x2b, 0x46, 0x10, 0x21, 0x7a, 0x44, + 0x04, 0xa8, 0xff, 0xf7, 0x11, 0xff, 0x4f, 0xf4, 0xd2, 0x72, 0xa1, 0x46, + 0x82, 0x46, 0x40, 0xf2, 0x41, 0x21, 0x38, 0x46, 0xff, 0xf7, 0x58, 0xff, + 0x06, 0x1e, 0xa1, 0x46, 0x18, 0xda, 0x1e, 0x49, 0x3a, 0x46, 0x06, 0x20, + 0x79, 0x44, 0xff, 0xf7, 0x3b, 0xff, 0x28, 0x46, 0x09, 0xb0, 0xbd, 0xe8, + 0xf0, 0x85, 0x01, 0x26, 0x7b, 0xe7, 0xdf, 0xf8, 0x64, 0xa0, 0xfa, 0x44, + 0x81, 0xe7, 0x18, 0x4b, 0x7b, 0x44, 0x85, 0xe7, 0x17, 0x4a, 0x7a, 0x44, + 0x8a, 0xe7, 0x17, 0x4a, 0x7a, 0x44, 0xc5, 0xe7, 0x51, 0x46, 0xff, 0xf7, + 0x11, 0xff, 0x00, 0x28, 0xa1, 0x46, 0x05, 0xdb, 0x52, 0x46, 0x30, 0x46, + 0x04, 0xa9, 0xff, 0xf7, 0x13, 0xff, 0xa1, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x41, 0xff, 0xdc, 0xe7, 0x55, 0x1a, 0x0c, 0x00, 0xa0, 0x86, 0x01, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, + 0x66, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x34, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x4b, 0x59, 0xf8, 0x03, 0x40, + 0x02, 0x4b, 0x23, 0x60, 0xff, 0xf7, 0xd4, 0xfe, 0x20, 0x71, 0x38, 0xbd, + 0x55, 0x1a, 0x0c, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x79, 0x65, 0x73, 0x00, + 0x4e, 0x4f, 0x00, 0x50, 0x41, 0x53, 0x53, 0x00, 0x46, 0x41, 0x49, 0x4c, + 0x00, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6f, + 0x77, 0x6e, 0x20, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x3a, + 0x20, 0x25, 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x20, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x3a, 0x20, 0x25, + 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x5b, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x25, 0x64, 0x20, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x64, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, + 0x25, 0x64, 0x00, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x5d, 0x20, 0x63, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, + 0x29, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xec, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x29, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x04, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x37, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x40, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xa0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xc8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xdc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x7c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x49, 0x5f, 0x63, 0x78, 0x78, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x63, 0x70, + 0x70, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, + 0x5f, 0x5a, 0x4c, 0x36, 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x00, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, + 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, + 0x61, 0x64, 0x64, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, + 0x00, 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, + 0x64, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x00, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, + 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x61, + 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, + 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x6f, 0x70, 0x65, 0x6e, + 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x72, 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x2e, 0x73, 0x79, + 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, + 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, + 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, + 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, + 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x69, + 0x6e, 0x69, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, + 0x2e, 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x03, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x44, 0x06, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf4, 0x16, 0x00, 0x00, 0xf4, 0x06, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, 0x94, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x04, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x08, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x08, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb8, 0x0c, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0d, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_cxxuser_len = 4352; diff --git a/examples/fdpicxip/fdpicxip_main.c b/examples/fdpicxip/fdpicxip_main.c new file mode 100644 index 00000000000..5c89f2ae056 --- /dev/null +++ b/examples/fdpicxip/fdpicxip_main.c @@ -0,0 +1,538 @@ +/**************************************************************************** + * apps/examples/fdpicxip/fdpicxip_main.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * End to end demonstration of the FDPIC module loader over a writable + * execute-in-place file system: + * + * 1. write a module into xipfs at run time, the way a download would, + * 2. confirm the file system can hand out a direct flash pointer for it, + * 3. run it, in some cases as two concurrent instances, + * 4. confirm the shared text was pinned in place while they ran and + * released afterwards. + * + * The point of FDPIC here is that text stays in flash and only the writable + * segment is copied, once per running instance -- so a second instance, or + * a second module sharing a library, costs data and no code. + * + * This demonstrates; it does not assert. The assertions live in the fdpic + * and reject sections of apps/testing/fs/xipfs. + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "qsorter_bin.h" +#include "libcounter_bin.h" +#include "user_bin.h" +#include "libshape_bin.h" +#include "cxxuser_bin.h" +#include "lazymod_bin.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define MOUNTPT CONFIG_EXAMPLES_FDPICXIP_MOUNTPT + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: extent_info_path + * + * Description: + * Where a file physically lies: its extent, its flash address, and how + * many live mappings are pinning it in place. + * + ****************************************************************************/ + +static int extent_info_path(FAR const char *path, + FAR struct xipfs_extent_info_s *info) +{ + int fd; + int ret; + + fd = open(path, O_RDONLY | O_CLOEXEC); + if (fd < 0) + { + return -errno; + } + + ret = ioctl(fd, XIPFSIOC_EXTENTINFO, (unsigned long)(uintptr_t)info); + close(fd); + + return ret < 0 ? -errno : 0; +} + +/**************************************************************************** + * Shared library demonstration + * + * Stages a library and a module that needs it, then runs two instances. + * Both share one mapped copy of each object's code, executed in place from + * flash, while each instance gets private copies of both the module's data + * and the library's. If the library's state were shared, the two totals + * would interleave instead of each reaching seed*3. + ****************************************************************************/ + +static int stage_blob(FAR const char *path, FAR const unsigned char *data, + unsigned int len) +{ + ssize_t n; + int fd; + + unlink(path); + + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0755); + if (fd < 0) + { + return -errno; + } + + if (ftruncate(fd, len) < 0) + { + close(fd); + return -errno; + } + + n = write(fd, data, len); + close(fd); + + return (n == (ssize_t)len) ? 0 : -EIO; +} + +/**************************************************************************** + * Name: qsorter_main + * + * Description: + * The simplest case the loader has: one self-contained FDPIC module, no + * library behind it, run as two concurrent instances. It is the FDPIC + * counterpart of what this demo does by default with NXFLAT, and the + * only subcommand that exercises a module with no second object -- solib + * and cxx both bring a library, jmprel is about how imports are bound. + * + * The two instances overlap deliberately: each fills its array, sleeps, + * then sorts. One shared copy of the text, a private copy of the data + * per instance -- shared data would show up as corrupted output, and the + * pin count while both are alive is what stops the defragmenter + * relocating code that is executing. + * + ****************************************************************************/ + +static int qsorter_main(void) +{ + struct xipfs_extent_info_s info; + FAR char *args[3]; + pid_t pid[2]; + char seed[8]; + int status; + int ret; + int i; + + syslog(LOG_INFO, + "\n=== FDPIC module executed in place from xipfs ===\n\n"); + + ret = stage_blob(MOUNTPT "/qsorter", g_qsorter_nxf, g_qsorter_nxf_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the module failed: %d\n", ret); + return EXIT_FAILURE; + } + + syslog(LOG_INFO, "staged qsorter (%u bytes)\n", g_qsorter_nxf_len); + + if (extent_info_path(MOUNTPT "/qsorter", &info) == 0) + { + syslog(LOG_INFO, "extent: block %" PRIu32 " x%" PRIu32 ", size %" + PRIu32 ", flash addr 0x%08lx\n", + info.start_block, info.nblocks, info.size, + (unsigned long)info.xipaddr); + + if (info.xipaddr == 0) + { + syslog(LOG_INFO, + "ERROR: filesystem cannot expose a flash pointer; the " + "module would have to be copied to RAM\n"); + return EXIT_FAILURE; + } + } + + syslog(LOG_INFO, "\nspawning two concurrent instances...\n\n"); + + for (i = 0; i < 2; i++) + { + snprintf(seed, sizeof(seed), "%d", i + 1); + args[0] = (FAR char *)"qsorter"; + args[1] = seed; + args[2] = NULL; + + ret = posix_spawn(&pid[i], MOUNTPT "/qsorter", NULL, NULL, args, NULL); + if (ret != 0) + { + syslog(LOG_INFO, "spawn %d failed: %d\n", i + 1, ret); + return EXIT_FAILURE; + } + } + + usleep(150000); + + if (extent_info_path(MOUNTPT "/qsorter", &info) == 0) + { + syslog(LOG_INFO, "[while running] pins on the shared text = %lu\n\n", + (unsigned long)info.pincount); + } + + for (i = 0; i < 2; i++) + { + waitpid(pid[i], &status, 0); + } + + usleep(100000); + + if (extent_info_path(MOUNTPT "/qsorter", &info) == 0) + { + syslog(LOG_INFO, "\n[after exit] pins on the shared text = %lu\n", + (unsigned long)info.pincount); + } + + syslog(LOG_INFO, "\n=== done ===\n"); + return EXIT_SUCCESS; +} + +static int solib_main(void) +{ + struct xipfs_extent_info_s li; + struct xipfs_extent_info_s ui; + FAR char *args[3]; + pid_t pid[2]; + char seed[8]; + int status; + int ret; + int i; + + syslog(LOG_INFO, "\n=== FDPIC shared library, executed in place ===\n\n"); + + ret = stage_blob(MOUNTPT "/libcounter.so", g_libcounter, g_libcounter_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the library failed: %d\n", ret); + return EXIT_FAILURE; + } + + ret = stage_blob(MOUNTPT "/user", g_user, g_user_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the module failed: %d\n", ret); + return EXIT_FAILURE; + } + + syslog(LOG_INFO, "staged libcounter.so (%u bytes) and user (%u bytes)\n", + g_libcounter_len, g_user_len); + + if (extent_info_path(MOUNTPT "/libcounter.so", &li) == 0 && + extent_info_path(MOUNTPT "/user", &ui) == 0) + { + syslog(LOG_INFO, " libcounter.so text at 0x%08lx\n", + (unsigned long)li.xipaddr); + syslog(LOG_INFO, " user text at 0x%08lx\n", + (unsigned long)ui.xipaddr); + } + + syslog(LOG_INFO, "\nspawning two instances, each bumping by its own" + " seed...\n\n"); + + for (i = 0; i < 2; i++) + { + snprintf(seed, sizeof(seed), "%d", i + 1); + args[0] = (FAR char *)"user"; + args[1] = seed; + args[2] = NULL; + + ret = posix_spawn(&pid[i], MOUNTPT "/user", NULL, NULL, args, NULL); + if (ret != 0) + { + syslog(LOG_INFO, "spawn %d failed: %d\n", i + 1, ret); + return EXIT_FAILURE; + } + } + + usleep(150000); + + if (extent_info_path(MOUNTPT "/libcounter.so", &li) == 0) + { + syslog(LOG_INFO, "[while running] pins on the library's shared text" + " = %lu\n\n", (unsigned long)li.pincount); + } + + for (i = 0; i < 2; i++) + { + waitpid(pid[i], &status, 0); + } + + usleep(100000); + + if (extent_info_path(MOUNTPT "/libcounter.so", &li) == 0) + { + syslog(LOG_INFO, "\n[after exit] pins on the library's shared text" + " = %lu\n", (unsigned long)li.pincount); + } + + syslog(LOG_INFO, "\n=== done ===\n"); + return EXIT_SUCCESS; +} + +/**************************************************************************** + * Name: cxx_main + * + * Description: + * The same shape as solib_main(), in C++, and with one thing extra to + * prove: that global constructors ran. + * + * That is worth a demo of its own because of how it fails. A loader that + * ignores DT_INIT_ARRAY still loads a C++ module, still resolves every + * symbol, and still runs it -- the globals are simply left as .bss and + * every field reads zero. Nothing faults and nothing is logged; the + * module just answers wrong. So both objects here carry a magic number + * that only a constructor writes, and the module reports whether it found + * them. + * + * The ordering is checked too. The module's constructor samples whether + * the library was already constructed when it ran, which is the only + * moment the answer is still interesting -- by the time main() is entered + * both have run either way. + * + ****************************************************************************/ + +static int cxx_main(void) +{ + struct xipfs_extent_info_s li; + struct xipfs_extent_info_s ui; + FAR char *args[3]; + pid_t pid[2]; + char seed[8]; + int status; + int ret; + int i; + + syslog(LOG_INFO, "\n=== C++ module and shared library, executed in" + " place ===\n\n"); + + ret = stage_blob(MOUNTPT "/libshape.so", g_libshape, g_libshape_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the library failed: %d\n", ret); + return EXIT_FAILURE; + } + + ret = stage_blob(MOUNTPT "/cxxuser", g_cxxuser, g_cxxuser_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the module failed: %d\n", ret); + return EXIT_FAILURE; + } + + syslog(LOG_INFO, "staged libshape.so (%u bytes) and cxxuser (%u bytes)\n", + g_libshape_len, g_cxxuser_len); + + if (extent_info_path(MOUNTPT "/libshape.so", &li) == 0 && + extent_info_path(MOUNTPT "/cxxuser", &ui) == 0) + { + syslog(LOG_INFO, " libshape.so text at 0x%08lx\n", + (unsigned long)li.xipaddr); + syslog(LOG_INFO, " cxxuser text at 0x%08lx\n", + (unsigned long)ui.xipaddr); + } + + syslog(LOG_INFO, "\nspawning two instances, each adding its own seed...\n" + "(each instance's constructors run at load time, before main)\n\n"); + + for (i = 0; i < 2; i++) + { + snprintf(seed, sizeof(seed), "%d", i + 1); + args[0] = (FAR char *)"cxxuser"; + args[1] = seed; + args[2] = NULL; + + ret = posix_spawn(&pid[i], MOUNTPT "/cxxuser", NULL, NULL, args, NULL); + if (ret != 0) + { + syslog(LOG_INFO, "spawn %d failed: %d\n", i + 1, ret); + return EXIT_FAILURE; + } + } + + usleep(150000); + + if (extent_info_path(MOUNTPT "/libshape.so", &li) == 0) + { + syslog(LOG_INFO, "[while running] pins on the library's shared text" + " = %lu\n\n", (unsigned long)li.pincount); + } + + /* Only a barrier. The exit status is deliberately not read: waitpid() + * retains it for an already-exited child only under + * CONFIG_SCHED_CHILD_STATUS, and both instances run for the same time, so + * the second is always gone by the time the first wait returns. Checking + * `status` after a failed wait reads whatever the previous iteration left + * there, which looks like a pass. The suite in apps/testing/fs/xipfs + * asserts the real result via files; this demo reports through the log. + */ + + ret = EXIT_SUCCESS; + + for (i = 0; i < 2; i++) + { + waitpid(pid[i], &status, 0); + } + + /* The destructors run on unload, which happens as each task is reaped -- + * after waitpid() has returned, so give them a moment to be logged. + */ + + usleep(100000); + + if (extent_info_path(MOUNTPT "/libshape.so", &li) == 0) + { + syslog(LOG_INFO, "\n[after exit] pins on the library's shared text" + " = %lu\n", (unsigned long)li.pincount); + } + + syslog(LOG_INFO, "\n=== %s ===\n", + ret == EXIT_SUCCESS ? "done" : "FAILED"); + return ret; +} + +/**************************************************************************** + * Name: jmprel_main + * + * Description: + * Load a module whose imports the linker put in DT_JMPREL. + * + * Every other module here is linked with -z now, which leaves the imported + * descriptors in DT_REL. This one empties BINDNOW in modules/Makefile, so + * it has no DT_REL at all -- both of its imports are in the PLT relocation + * table. + * + * There is no lazy resolver in the loader, so a DT_JMPREL table that went + * unwalked was not deferred work: the descriptors stayed unrelocated and + * the module's first call into the firmware branched to whatever the + * unrelocated word held. It loaded cleanly and printed nothing, then + * took an INVSTATE UsageFault that escalated to a HardFault -- no + * console, no crash dump. If this demo prints its line, both tables are + * being bound. + * + ****************************************************************************/ + +static int jmprel_main(void) +{ + FAR char *args[3]; + pid_t pid; + int status; + int ret; + + syslog(LOG_INFO, "\n=== FDPIC module bound through DT_JMPREL ===\n\n"); + + ret = stage_blob(MOUNTPT "/lazymod", g_lazymod, g_lazymod_len); + if (ret < 0) + { + syslog(LOG_INFO, "staging the module failed: %d\n", ret); + return EXIT_FAILURE; + } + + syslog(LOG_INFO, "staged lazymod (%u bytes), all imports in DT_JMPREL\n\n", + g_lazymod_len); + + args[0] = (FAR char *)"lazymod"; + args[1] = (FAR char *)"42"; + args[2] = NULL; + + ret = posix_spawn(&pid, MOUNTPT "/lazymod", NULL, NULL, args, NULL); + if (ret != 0) + { + syslog(LOG_INFO, "spawn failed: %d\n", ret); + return EXIT_FAILURE; + } + + waitpid(pid, &status, 0); + + if (!WIFEXITED(status) || WEXITSTATUS(status) != EXIT_SUCCESS) + { + syslog(LOG_INFO, "\n=== FAILED: module did not exit cleanly ===\n"); + return EXIT_FAILURE; + } + + syslog(LOG_INFO, "\n=== done: the module reached the firmware and came" + " back ===\n"); + return EXIT_SUCCESS; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, FAR char *argv[]) +{ + if (argc > 1 && strcmp(argv[1], "solib") == 0) + { + return solib_main(); + } + + if (argc > 1 && strcmp(argv[1], "cxx") == 0) + { + return cxx_main(); + } + + if (argc > 1 && strcmp(argv[1], "jmprel") == 0) + { + return jmprel_main(); + } + + if (argc > 1 && strcmp(argv[1], "qsort") != 0) + { + fprintf(stderr, "usage: fdpicxip [qsort|solib|cxx|jmprel]\n"); + return EXIT_FAILURE; + } + + return qsorter_main(); +} diff --git a/examples/fdpicxip/lazymod_bin.h b/examples/fdpicxip/lazymod_bin.h new file mode 100644 index 00000000000..b2d514312b3 --- /dev/null +++ b/examples/fdpicxip/lazymod_bin.h @@ -0,0 +1,220 @@ +/**************************************************************************** + * apps/examples/fdpicxip/lazymod_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from lazymod.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_lazymod[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd5, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x3c, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x3c, 0x12, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x3c, 0x02, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, + 0x6e, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, + 0x67, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, + 0xc0, 0x12, 0x00, 0x00, 0xa4, 0x04, 0x00, 0x00, 0xc8, 0x12, 0x00, 0x00, + 0xa4, 0x05, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0xf8, 0x08, 0xc0, 0x4d, 0xf8, 0x04, 0xcd, + 0xd9, 0xf8, 0x04, 0xc0, 0xd9, 0xf8, 0x00, 0xf0, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0xf8, 0x08, 0xc0, + 0x4d, 0xf8, 0x04, 0xcd, 0xd9, 0xf8, 0x04, 0xc0, 0xd9, 0xf8, 0x00, 0xf0, + 0x01, 0x28, 0x10, 0xb5, 0x4c, 0x46, 0x0b, 0xdd, 0x48, 0x68, 0xff, 0xf7, + 0xe5, 0xff, 0xa1, 0x46, 0x02, 0x46, 0x04, 0x49, 0x06, 0x20, 0x79, 0x44, + 0xff, 0xf7, 0xca, 0xff, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x22, 0xf6, 0xe7, + 0x0e, 0x00, 0x00, 0x00, 0x5b, 0x6c, 0x61, 0x7a, 0x79, 0x6d, 0x6f, 0x64, + 0x5d, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x44, 0x54, 0x5f, 0x4a, 0x4d, + 0x50, 0x52, 0x45, 0x4c, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x25, 0x64, + 0x0a, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xc4, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x0b, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x11, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x1a, 0x00, 0x00, 0x00, + 0xb4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xd5, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x6c, 0x61, 0x7a, 0x79, 0x6d, 0x6f, 0x64, 0x2e, 0x63, 0x00, 0x24, + 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, + 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, + 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, + 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, + 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, + 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, + 0x69, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, + 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, + 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, + 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x70, 0x6c, 0x74, 0x00, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x74, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, + 0xfc, 0x01, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, + 0xb4, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x03, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_lazymod_len = 2192; diff --git a/examples/fdpicxip/libcounter_bin.h b/examples/fdpicxip/libcounter_bin.h new file mode 100644 index 00000000000..9ef92cae7bd --- /dev/null +++ b/examples/fdpicxip/libcounter_bin.h @@ -0,0 +1,208 @@ +/**************************************************************************** + * apps/examples/fdpicxip/libcounter_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from libcounter.so -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_libcounter[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0xf8, 0x11, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xe5, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, 0x70, 0x00, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, + 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, + 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, + 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6c, 0x69, 0x62, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x00, 0x00, + 0x8c, 0x12, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0x1a, 0x68, 0x10, 0x44, 0x18, 0x60, 0x70, 0x47, 0x00, 0xbf, + 0x0c, 0x00, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x18, 0x68, + 0x70, 0x47, 0x00, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, + 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, + 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, + 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, + 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, + 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, + 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, + 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, + 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, + 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x0e, 0x00, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x14, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x90, 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x26, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, + 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, 0x60, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x70, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x00, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, + 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, 0x67, 0x5f, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, + 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, + 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, + 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, + 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, + 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, + 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, + 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, + 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, + 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, + 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, + 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf4, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x90, 0x12, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd5, 0x02, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x05, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_libcounter_len = 2052; diff --git a/examples/fdpicxip/libshape_bin.h b/examples/fdpicxip/libshape_bin.h new file mode 100644 index 00000000000..17815330832 --- /dev/null +++ b/examples/fdpicxip/libshape_bin.h @@ -0,0 +1,389 @@ +/**************************************************************************** + * apps/examples/fdpicxip/libshape_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from libshape.so -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_libshape[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x88, 0x0d, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0xbc, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0xbc, 0x15, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc4, 0x05, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0d, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x6d, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x99, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x79, 0x00, 0x00, 0x00, 0xa9, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x85, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x44, 0x32, 0x45, 0x76, 0x00, 0x73, 0x79, + 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x66, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x63, + 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x44, 0x31, 0x45, 0x76, 0x00, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x00, 0x73, 0x74, 0x72, + 0x6c, 0x63, 0x70, 0x79, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x00, 0x5f, + 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6c, 0x69, 0x62, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x2e, 0x73, 0x6f, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xc0, 0x16, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x80, 0x16, 0x00, 0x00, + 0xa4, 0x07, 0x00, 0x00, 0x88, 0x16, 0x00, 0x00, 0xa4, 0x09, 0x00, 0x00, + 0x90, 0x16, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0x98, 0x16, 0x00, 0x00, + 0xa4, 0x0e, 0x00, 0x00, 0xa0, 0x16, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x00, + 0xa8, 0x16, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, 0xb0, 0x16, 0x00, 0x00, + 0xa4, 0x13, 0x00, 0x00, 0xb8, 0x16, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x03, 0x4b, 0x59, 0xf8, 0x03, 0x00, + 0xff, 0xf7, 0xaa, 0xff, 0x10, 0xbd, 0x00, 0xbf, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x07, 0x4b, 0x05, 0x49, 0x59, 0xf8, 0x03, 0x30, 0x06, 0x20, + 0xc3, 0xe9, 0x00, 0x12, 0x04, 0x49, 0x9a, 0x60, 0x79, 0x44, 0x1a, 0x73, + 0xff, 0xf7, 0xca, 0xbf, 0xe0, 0xa9, 0x5b, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x04, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x9a, 0x68, + 0x01, 0x32, 0x9a, 0x60, 0x5a, 0x68, 0x10, 0x44, 0x58, 0x60, 0x70, 0x47, + 0x4c, 0x00, 0x00, 0x00, 0x03, 0x4b, 0x01, 0x46, 0x59, 0xf8, 0x03, 0x00, + 0x40, 0x22, 0x0c, 0x30, 0xff, 0xf7, 0xa6, 0xbf, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x58, 0x68, 0x70, 0x47, 0x00, 0xbf, + 0x4c, 0x00, 0x00, 0x00, 0x05, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x18, 0x68, + 0x02, 0x4b, 0xc3, 0x1a, 0x58, 0x42, 0x58, 0x41, 0x70, 0x47, 0x00, 0xbf, + 0xe0, 0xa9, 0x5b, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x45, + 0x1d, 0x49, 0x05, 0x46, 0x82, 0x68, 0x85, 0xb0, 0x06, 0x20, 0x79, 0x44, + 0x4c, 0x46, 0xff, 0xf7, 0x8d, 0xff, 0x2b, 0x7b, 0xa1, 0x46, 0x1b, 0xb3, + 0x18, 0x4a, 0x10, 0x21, 0x6b, 0x68, 0x7a, 0x44, 0x68, 0x46, 0xff, 0xf7, + 0x5b, 0xff, 0x05, 0xf1, 0x0c, 0x07, 0xa1, 0x46, 0x82, 0x46, 0x4f, 0xf4, + 0xd2, 0x72, 0x40, 0xf2, 0x41, 0x21, 0x38, 0x46, 0xff, 0xf7, 0x82, 0xff, + 0x06, 0x1e, 0xa1, 0x46, 0x12, 0xdb, 0x51, 0x46, 0xff, 0xf7, 0x54, 0xff, + 0x00, 0x28, 0xa1, 0x46, 0x05, 0xdb, 0x52, 0x46, 0x69, 0x46, 0x30, 0x46, + 0xff, 0xf7, 0x56, 0xff, 0xa1, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x7a, 0xff, + 0x28, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x85, 0x05, 0x49, 0x3a, 0x46, + 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0x5c, 0xff, 0xf4, 0xe7, 0x00, 0xbf, + 0x76, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x20, 0x20, 0x5b, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, + 0x20, 0x7e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x28, 0x29, + 0x20, 0x72, 0x61, 0x6e, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x25, + 0x64, 0x20, 0x61, 0x64, 0x64, 0x73, 0x0a, 0x00, 0x25, 0x64, 0x00, 0x20, + 0x20, 0x5b, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, 0x20, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x20, 0x25, 0x73, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x0a, 0x00, 0x20, 0x20, 0x5b, 0x6c, 0x69, 0x62, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x79, 0x28, 0x29, 0x20, 0x72, 0x61, 0x6e, 0x0a, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xbc, 0x15, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, + 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, + 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, + 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, + 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, + 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, + 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, + 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, + 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0f, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xc4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x94, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x98, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xa4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xbc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x00, 0x49, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x59, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x62, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x4c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xb4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xc8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x6d, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x99, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xa9, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x85, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x49, 0x5f, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x63, + 0x70, 0x70, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, + 0x73, 0x75, 0x62, 0x5f, 0x44, 0x5f, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2e, 0x63, 0x70, 0x70, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, + 0x48, 0x4f, 0x52, 0x30, 0x00, 0x5f, 0x5a, 0x4c, 0x31, 0x30, 0x67, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x00, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, + 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x44, 0x31, 0x45, 0x76, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x66, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x44, 0x32, 0x45, 0x76, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x65, 0x64, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, + 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x73, 0x74, 0x72, 0x6c, 0x63, + 0x70, 0x79, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, + 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, + 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, + 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, + 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, 0x74, + 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x00, + 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x69, 0x6e, + 0x69, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x66, 0x69, + 0x6e, 0x69, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, + 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x4c, 0x05, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0xbc, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xc0, 0x15, 0x00, 0x00, 0xc0, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0xc4, 0x05, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, + 0x74, 0x06, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x90, 0x04, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x0b, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xeb, 0x0c, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_libshape_len = 4224; diff --git a/examples/fdpicxip/modules/.gitignore b/examples/fdpicxip/modules/.gitignore new file mode 100644 index 00000000000..8c3555579b7 --- /dev/null +++ b/examples/fdpicxip/modules/.gitignore @@ -0,0 +1,5 @@ +/*.fdpic +/*.so +/.nuttx-exports +/manyneeded.c +/need*.c diff --git a/examples/fdpicxip/modules/Makefile b/examples/fdpicxip/modules/Makefile new file mode 100644 index 00000000000..56dfd7ebb81 --- /dev/null +++ b/examples/fdpicxip/modules/Makefile @@ -0,0 +1,205 @@ +############################################################################ +# apps/examples/fdpicxip/modules/Makefile +# +# SPDX-License-Identifier: Apache-2.0 +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. The +# ASF licenses this file to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance with the +# License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +############################################################################ + +# The FDPIC modules that examples/fdpicxip and testing/fs/xipfs carry inside +# their images, and the sources they are built from. +# +# This is NOT part of the application build. Nothing here runs unless it is +# asked for: the *_bin.h headers are committed, so both apps build with a +# plain toolchain and CI covers them, while the link needs +# arm-uclinuxfdpiceabi binutils, which the tree does not require. See +# nuttx/tools/fdpic/README.md and Documentation/components/fdpic.rst. +# +# To rebuild the headers from these sources: +# +# make -C apps/examples/fdpicxip/modules regen NUTTX_DIR=/path/to/nuttx +# +# NUTTX_DIR must be a configured, built tree with CONFIG_FDPIC and a system +# symbol table: the compile needs its headers and the verify step needs +# libs/libc/exec_symtab.c. +# +# CPU is cortex-m3 rather than the toolchain default, deliberately. A v7-M +# module runs on both the v7-M and v8-M targets, so one set of blobs serves +# the RP2350 (Cortex-M33) and mps2-an500 (Cortex-M7) alike. Building for +# cortex-m33 produces blobs the M7 cannot execute at all. + +CPU ?= cortex-m3 + +FDPICDIR = $(NUTTX_DIR)/tools/fdpic +MODULE_MK = $(FDPICDIR)/nuttx-fdpic.mk +EMBED = $(FDPICDIR)/fdpic-embed + +# Where each generated header goes, and its path from the repository root -- +# fdpic-embed puts that on line 2, which is what nxstyle wants. + +DEMODIR = .. +DEMOREL = apps/examples/fdpicxip +TESTDIR = ../../../testing/fs/xipfs +TESTREL = apps/testing/fs/xipfs + +BUILD = $(MAKE) -f $(MODULE_MK) NUTTX_DIR=$(NUTTX_DIR) CPU=$(CPU) + +# manyneeded needs one library per DT_NEEDED entry, one more than the loader +# will follow. They exist only to make the linker record nine entries; the +# module is refused while its dynamic section is parsed, before any of them +# would be loaded, so none of them is embedded. + +NEEDLIBS := $(foreach n,0 1 2 3 4 5 6 7 8,need$(n).so) + +DEMO_HDRS = $(DEMODIR)/qsorter_bin.h $(DEMODIR)/libcounter_bin.h \ + $(DEMODIR)/user_bin.h $(DEMODIR)/libshape_bin.h \ + $(DEMODIR)/cxxuser_bin.h $(DEMODIR)/lazymod_bin.h + +TEST_HDRS = $(TESTDIR)/callback_bin.h $(TESTDIR)/counteruser_bin.h \ + $(TESTDIR)/cxxuser_bin.h $(TESTDIR)/funcdesc_bin.h \ + $(TESTDIR)/lazymod_bin.h $(TESTDIR)/libcounter_bin.h \ + $(TESTDIR)/libshape_bin.h $(TESTDIR)/manyneeded_bin.h \ + $(TESTDIR)/missingsym_bin.h + +.PHONY: all regen check-nuttx-dir clean + +all: + @echo "Nothing to do: the *_bin.h headers are committed." + @echo "To rebuild them: make regen NUTTX_DIR=/path/to/nuttx" + +regen: check-nuttx-dir $(DEMO_HDRS) $(TEST_HDRS) + @echo "Regenerated the embedded modules for $(DEMOREL) and $(TESTREL)." + +check-nuttx-dir: +ifeq ($(NUTTX_DIR),) + $(error Set NUTTX_DIR to a configured, built NuttX tree) +endif + +# The modules. Libraries have no entry point and are named by their SONAME, +# which is what a consumer records in DT_NEEDED and what the loader searches +# for at run time. + +qsorter.fdpic: qsorter.c + $(BUILD) MODULE=qsorter SRCS=qsorter.c + +callback.fdpic: callback.c + $(BUILD) MODULE=callback SRCS=callback.c + +funcdesc.fdpic: funcdesc.c + $(BUILD) MODULE=funcdesc SRCS=funcdesc.c + +libcounter.so: libcounter.c + $(BUILD) MODULE=libcounter SRCS=libcounter.c ENTRY=0 \ + EXTRA_LDFLAGS="-soname libcounter.so" + mv libcounter.fdpic libcounter.so + +user.fdpic: user.c libcounter.so + $(BUILD) MODULE=user SRCS=user.c LIBS=libcounter.so + +# C++ compiles with the stock arm-none-eabi-g++; only the link is FDPIC. + +libshape.so: libshape.cpp + $(BUILD) MODULE=libshape CXXSRCS=libshape.cpp ENTRY=0 \ + EXTRA_LDFLAGS="-soname libshape.so" + mv libshape.fdpic libshape.so + +cxxuser.fdpic: cxxuser.cpp libshape.so + $(BUILD) MODULE=cxxuser CXXSRCS=cxxuser.cpp LIBS=libshape.so + +# BINDNOW is emptied so the imported descriptors stay in the lazy binding +# table, which is the case this module exists to cover. + +lazymod.fdpic: lazymod.c + $(BUILD) MODULE=lazymod SRCS=lazymod.c BINDNOW= + +# missingsym is linked with the bare .fdpic target rather than the default +# 'verify' one, because it is exactly what fdpic-verify is meant to catch. + +missingsym.fdpic: missingsym.c + $(BUILD) MODULE=missingsym SRCS=missingsym.c missingsym.fdpic + +need%.so: + echo "int need_leaf_$*(void){return $*;}" > need$*.c + $(BUILD) MODULE=need$* SRCS=need$*.c ENTRY=0 \ + EXTRA_LDFLAGS="-soname need$*.so" + mv need$*.fdpic need$*.so + +manyneeded.c: $(NEEDLIBS) + { for n in 0 1 2 3 4 5 6 7 8; do \ + echo "extern int need_leaf_$$n(void);"; done; \ + echo "int main(int argc, char *argv[]) {"; \ + echo " return need_leaf_0() + need_leaf_1() + need_leaf_2() +"; \ + echo " need_leaf_3() + need_leaf_4() + need_leaf_5() +"; \ + echo " need_leaf_6() + need_leaf_7() + need_leaf_8();"; \ + echo "}"; } > manyneeded.c + +manyneeded.fdpic: manyneeded.c $(NEEDLIBS) + $(BUILD) MODULE=manyneeded SRCS=manyneeded.c LIBS="$(NEEDLIBS)" \ + manyneeded.fdpic + +# The headers. One artifact can be embedded under more than one name: the +# demo's user_bin.h and the suite's counteruser_bin.h are the same module. + +$(DEMODIR)/qsorter_bin.h: qsorter.fdpic + $(EMBED) $< g_qsorter_nxf $(DEMOREL)/$(@F) > $@ + +$(DEMODIR)/libcounter_bin.h: libcounter.so + $(EMBED) $< g_libcounter $(DEMOREL)/$(@F) > $@ + +$(DEMODIR)/user_bin.h: user.fdpic + $(EMBED) $< g_user $(DEMOREL)/$(@F) > $@ + +$(DEMODIR)/libshape_bin.h: libshape.so + $(EMBED) $< g_libshape $(DEMOREL)/$(@F) > $@ + +$(DEMODIR)/cxxuser_bin.h: cxxuser.fdpic + $(EMBED) $< g_cxxuser $(DEMOREL)/$(@F) > $@ + +$(DEMODIR)/lazymod_bin.h: lazymod.fdpic + $(EMBED) $< g_lazymod $(DEMOREL)/$(@F) > $@ + +$(TESTDIR)/callback_bin.h: callback.fdpic + $(EMBED) $< g_callback $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/counteruser_bin.h: user.fdpic + $(EMBED) $< g_counteruser $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/cxxuser_bin.h: cxxuser.fdpic + $(EMBED) $< g_cxxuser $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/funcdesc_bin.h: funcdesc.fdpic + $(EMBED) $< g_funcdesc $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/lazymod_bin.h: lazymod.fdpic + $(EMBED) $< g_lazymod $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/libcounter_bin.h: libcounter.so + $(EMBED) $< g_libcounter $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/libshape_bin.h: libshape.so + $(EMBED) $< g_libshape $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/manyneeded_bin.h: manyneeded.fdpic + $(EMBED) $< g_manyneeded $(TESTREL)/$(@F) > $@ + +$(TESTDIR)/missingsym_bin.h: missingsym.fdpic + $(EMBED) $< g_missingsym $(TESTREL)/$(@F) > $@ + +# No NUTTX_DIR needed to clean. + +clean: + $(Q) rm -f *.o *.fdpic *.so .nuttx-exports need*.c manyneeded.c diff --git a/examples/fdpicxip/modules/callback.c b/examples/fdpicxip/modules/callback.c new file mode 100644 index 00000000000..1a1b3332583 --- /dev/null +++ b/examples/fdpicxip/modules/callback.c @@ -0,0 +1,517 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/callback.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Hands a module function to the firmware every way the firmware will + * accept one. + * + * In FDPIC a function pointer is the address of a two-word descriptor, not + * a code address, and that descriptor lives in the module's writable + * segment in RAM. Firmware that stores such a pointer and later branches to + * it therefore jumps into the module's *data* and faults -- unless the entry + * point it came through resolved the descriptor first. + * + * qsort and bsearch have always done that. pthread_create, signal and + * task_create did not, which made them look usable and then take the board + * down; pthread_once, task_spawn, scandir's filter and sigaction followed + * later. This module is what keeps all of them honest. + * + * scandir is one worth noting: its filter is called by scandir itself and + * must be resolved there, while its comparison function is handed to qsort, + * which resolves it. Resolving both would be a bug, so both are passed here + * at once. + * + * mq_notify and timer_create with SIGEV_THREAD are the interesting ones: + * their callback runs on a work-queue worker that carries no module data + * base. The base is captured at registration and installed around the call, + * so the callback still reaches the module's own globals. Each is checked + * by having the callback write a distinctive value into a module global. + * + * Everything is checked by observing a side effect the callback itself + * produces, because a callback that never runs is the failure being tested + * for -- and on this target the alternative failure is a HardFault, which + * reports nothing at all. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define FAIL_QSORT 0x01 +#define FAIL_PTHREAD 0x02 +#define FAIL_SIGNAL 0x04 +#define FAIL_TASK 0x08 +#define FAIL_ONCE 0x10 +#define FAIL_SPAWN 0x20 +#define FAIL_SCANDIR 0x40 +#define FAIL_SIGACTION 0x80 + +/* The mq checks run under "callback mq" and report in their own byte, so the + * exit status -- only eight bits survive waitpid -- never has to hold more + * than eight flags at once. + */ + +#define FAIL_MQ_THREAD 0x01 +#define FAIL_MQ_SIGNAL 0x02 +#define FAIL_TIMER_THREAD 0x04 + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* Written by the callbacks, read by main. These live in the module's + * writable segment, which is what the callback can only reach if it was + * entered with this module's data base in the FDPIC register. + */ + +static volatile int g_qsort_calls; +static volatile int g_thread_ran; +static volatile int g_signal_ran; +static volatile int g_task_ran; +static volatile int g_once_ran; +static volatile int g_spawn_ran; +static volatile int g_filter_calls; +static volatile int g_compar_calls; +static volatile int g_sigaction_ran; +static volatile int g_mq_signal_ran; +static volatile int g_mq_thread_ran; +static volatile int g_timer_thread_ran; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static int cmp_int(const void *a, const void *b) +{ + g_qsort_calls++; + return *(const int *)a - *(const int *)b; +} + +static void *thread_main(void *arg) +{ + g_thread_ran = (int)(intptr_t)arg; + return NULL; +} + +static void sig_handler(int signo) +{ + g_signal_ran = signo; +} + +static void sigaction_handler(int signo, siginfo_t *info, void *context) +{ + g_sigaction_ran = signo; +} + +static void mq_signal_handler(int signo, siginfo_t *info, void *context) +{ + g_mq_signal_ran = signo; +} + +static void mq_thread_notify(union sigval value) +{ + /* Runs on a work-queue worker, which carries no module data base of its + * own. Writing this module global proves the base was installed around + * the call -- without it this store would fault or land nowhere. + */ + + g_mq_thread_ran = value.sival_int; +} + +static void timer_thread_notify(union sigval value) +{ + g_timer_thread_ran = value.sival_int; +} + +static int task_main(int argc, char *argv[]) +{ + g_task_ran = 1; + return 0; +} + +static void once_routine(void) +{ + g_once_ran++; +} + +static int spawn_main(int argc, char *argv[]) +{ + g_spawn_ran = 1; + return 0; +} + +static int dir_filter(const struct dirent *entry) +{ + g_filter_calls++; + return 1; +} + +static int dir_compar(const struct dirent **a, const struct dirent **b) +{ + g_compar_calls++; + return strcmp((*a)->d_name, (*b)->d_name); +} + +/* The message-queue checks run as a second invocation, "callback mq", so + * their two flags report in a byte of their own rather than overflowing the + * eight-bit exit status the other checks already fill. + */ + +static int run_mq(void) +{ + struct mq_attr attr; + struct sigaction sa; + struct sigevent ev; + struct itimerspec its; + timer_t timer; + mqd_t mqd; + int fails = 0; + int i; + + attr.mq_maxmsg = 1; + attr.mq_msgsize = 1; + attr.mq_flags = 0; + + mqd = mq_open("/cbmq", O_CREAT | O_RDWR, 0644, &attr); + if (mqd == (mqd_t)-1) + { + return FAIL_MQ_THREAD | FAIL_MQ_SIGNAL | FAIL_TIMER_THREAD; + } + + /* mq_notify with SIGEV_THREAD. The callback runs on a work-queue worker + * that carries no module data base of its own; the base captured at + * registration is installed around the call, so the callback reaches this + * module's globals. A distinctive sival marks that the right callback + * ran with the right argument. + */ + + memset(&ev, 0, sizeof(ev)); + ev.sigev_notify = SIGEV_THREAD; + ev.sigev_notify_function = mq_thread_notify; + ev.sigev_value.sival_int = 0x5a; + + if (mq_notify(mqd, &ev) < 0) + { + fails |= FAIL_MQ_THREAD; + } + else + { + char buf[1]; + + /* The notification fires on a send to an empty queue; drain the + * message afterwards so the queue is empty for the next test and the + * next send does not block on a full queue. + */ + + mq_send(mqd, "x", 1, 0); + + for (i = 0; i < 50 && g_mq_thread_ran == 0; i++) + { + usleep(10000); + } + + mq_receive(mqd, buf, sizeof(buf), NULL); + + if (g_mq_thread_ran != 0x5a) + { + fails |= FAIL_MQ_THREAD; + } + } + + /* mq_notify with SIGEV_SIGNAL, delivered to this task and caught by a + * handler installed through sigaction. + */ + + memset(&sa, 0, sizeof(sa)); + sa.sa_sigaction = mq_signal_handler; + sa.sa_flags = SA_SIGINFO; + sigaction(SIGUSR1, &sa, NULL); + + memset(&ev, 0, sizeof(ev)); + ev.sigev_notify = SIGEV_SIGNAL; + ev.sigev_signo = SIGUSR1; + + if (mq_notify(mqd, &ev) < 0) + { + fails |= FAIL_MQ_SIGNAL; + } + else + { + char buf[1]; + + mq_send(mqd, "x", 1, 0); + + for (i = 0; i < 50 && g_mq_signal_ran == 0; i++) + { + usleep(10000); + } + + mq_receive(mqd, buf, sizeof(buf), NULL); + + if (g_mq_signal_ran != SIGUSR1) + { + fails |= FAIL_MQ_SIGNAL; + } + } + + mq_close(mqd); + mq_unlink("/cbmq"); + + /* timer_create with SIGEV_THREAD reaches the module the same way: the + * expiry callback runs on the worker with the module's base installed. + */ + + memset(&ev, 0, sizeof(ev)); + ev.sigev_notify = SIGEV_THREAD; + ev.sigev_notify_function = timer_thread_notify; + ev.sigev_value.sival_int = 0xa5; + + if (timer_create(CLOCK_MONOTONIC, &ev, &timer) < 0) + { + fails |= FAIL_TIMER_THREAD; + } + else + { + its.it_value.tv_sec = 0; + its.it_value.tv_nsec = 20 * 1000 * 1000; + its.it_interval.tv_sec = 0; + its.it_interval.tv_nsec = 0; + timer_settime(timer, 0, &its, NULL); + + for (i = 0; i < 50 && g_timer_thread_ran == 0; i++) + { + usleep(10000); + } + + if (g_timer_thread_ran != 0xa5) + { + fails |= FAIL_TIMER_THREAD; + } + + timer_delete(timer); + } + + syslog(LOG_INFO, + "[callback] mq_thread=%#x mq_signal=%d timer_thread=%#x -- %s\n", + g_mq_thread_ran, g_mq_signal_ran, g_timer_thread_ran, + fails == 0 ? "PASS" : "FAIL"); + + return fails; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, char *argv[]) +{ + int v[5] = + { + 5, 3, 1, 4, 2 + }; + + struct dirent **namelist; + pthread_once_t once = PTHREAD_ONCE_INIT; + struct sigaction sa; + pthread_t tid; + int fails = 0; + int n; + int i; + + if (argc > 1 && strcmp(argv[1], "mq") == 0) + { + return run_mq(); + } + + /* qsort -- the path that always worked */ + + qsort(v, 5, sizeof(int), cmp_int); + if (g_qsort_calls == 0 || v[0] != 1 || v[4] != 5) + { + fails |= FAIL_QSORT; + } + + /* pthread_create. The thread inherits this module's D-Space, so it can + * reach g_thread_ran only if it was entered at the right address. + */ + + if (pthread_create(&tid, NULL, thread_main, (void *)(intptr_t)7) != 0) + { + fails |= FAIL_PTHREAD; + } + else + { + pthread_join(tid, NULL); + if (g_thread_ran != 7) + { + fails |= FAIL_PTHREAD; + } + } + + /* signal, delivered to this task */ + + if (signal(SIGUSR1, sig_handler) == SIG_ERR) + { + fails |= FAIL_SIGNAL; + } + else + { + /* raise() rather than kill(getpid(), ...): getpid is not in the + * firmware's export list, and raise targets the calling thread, which + * is exactly what this is checking. + */ + + raise(SIGUSR1); + + for (i = 0; i < 50 && g_signal_ran == 0; i++) + { + usleep(10000); + } + + if (g_signal_ran != SIGUSR1) + { + fails |= FAIL_SIGNAL; + } + } + + /* task_create. A separate task, but the same D-Space. */ + + if (task_create("cbtask", SCHED_PRIORITY_DEFAULT, 2048, task_main, + NULL) < 0) + { + fails |= FAIL_TASK; + } + else + { + for (i = 0; i < 50 && g_task_ran == 0; i++) + { + usleep(10000); + } + + if (g_task_ran == 0) + { + fails |= FAIL_TASK; + } + } + + /* sigaction, delivered to this task. signal() above resolves the handler + * before calling sigaction; this reaches sigaction directly, which is the + * path signal() does not cover. + */ + + memset(&sa, 0, sizeof(sa)); + sa.sa_sigaction = sigaction_handler; + sa.sa_flags = SA_SIGINFO; + + if (sigaction(SIGUSR2, &sa, NULL) < 0) + { + fails |= FAIL_SIGACTION; + } + else + { + raise(SIGUSR2); + + for (i = 0; i < 50 && g_sigaction_ran == 0; i++) + { + usleep(10000); + } + + if (g_sigaction_ran != SIGUSR2) + { + fails |= FAIL_SIGACTION; + } + } + + /* pthread_once. Runs on this thread, so only the code address matters. */ + + if (pthread_once(&once, once_routine) != 0 || g_once_ran != 1) + { + fails |= FAIL_ONCE; + } + + /* task_spawn. Like task_create, a separate task with the same D-Space. */ + + if (task_spawn("cbspawn", spawn_main, NULL, NULL, NULL, NULL) < 0) + { + fails |= FAIL_SPAWN; + } + else + { + for (i = 0; i < 50 && g_spawn_ran == 0; i++) + { + usleep(10000); + } + + if (g_spawn_ran == 0) + { + fails |= FAIL_SPAWN; + } + } + + /* scandir takes two callbacks that reach the module by different routes: + * the filter is called by scandir itself, while the comparison function is + * handed to qsort. Passing both at once is the point -- it is what would + * catch the comparison function being resolved twice. + */ + + namelist = NULL; + n = scandir("/mnt/xipfs", &namelist, dir_filter, dir_compar); + if (n < 0 || g_filter_calls == 0) + { + fails |= FAIL_SCANDIR; + } + + if (namelist != NULL) + { + while (n-- > 0) + { + free(namelist[n]); + } + + free(namelist); + } + + syslog(LOG_INFO, + "[callback] qsort=%d pthread=%d signal=%d task=%d sigaction=%d " + "once=%d spawn=%d filter=%d compar=%d -- %s\n", + g_qsort_calls, g_thread_ran, g_signal_ran, g_task_ran, + g_sigaction_ran, g_once_ran, g_spawn_ran, g_filter_calls, + g_compar_calls, fails == 0 ? "PASS" : "FAIL"); + + return fails; +} diff --git a/examples/fdpicxip/modules/cxxuser.cpp b/examples/fdpicxip/modules/cxxuser.cpp new file mode 100644 index 00000000000..5c27cf5756a --- /dev/null +++ b/examples/fdpicxip/modules/cxxuser.cpp @@ -0,0 +1,210 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/cxxuser.cpp + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* A C++ module using a C++ shared library. + * + * Two instances of this run at once in the demo. Between them they show + * the three things that have to hold: + * + * - constructors ran, in both objects. Neither magic can be right by + * accident: an unconstructed global is zero. + * - the library's constructors ran before this module's, which is the + * ordering DT_NEEDED implies and the loader has to honour. + * - the library's data is private per instance. One copy of its code + * sits in flash; the totals do not interleave. + */ + +#include +#include +#include +#include +#include + +extern "C" +{ + int shape_add(int by); + int shape_total(void); + bool shape_constructed(void); + void shape_marker(const char *path); +} + +#define USER_MAGIC 0x0c1a55 + +class Instance +{ +public: + Instance() : m_magic(USER_MAGIC), m_libwasready(shape_constructed()) + { + } + + bool constructed() const + { + return m_magic == USER_MAGIC; + } + + /* Whether the library was already constructed when this object's own + * constructor ran. Sampling it here is the only way to observe the + * ordering: by the time main() runs, both have been constructed either + * way. + */ + + bool libwasready() const + { + return m_libwasready; + } + +private: + int m_magic; + bool m_libwasready; +}; + +static Instance g_self; + +/* Exit status is a bitmask of what failed, so one run reports on all four + * properties independently. Kept in step with the reader in + * apps/testing/fs/xipfs/. + */ + +#define USER_FAIL_OWN_CTOR 0x01 +#define USER_FAIL_LIB_CTOR 0x02 +#define USER_FAIL_ORDER 0x04 +#define USER_FAIL_PRIVATE 0x08 + +/**************************************************************************** + * Name: record + * + * Description: + * Write a number to a file, for a caller that cannot rely on this task's + * exit status. + * + * It cannot, in general. waitpid() only retains the status of a child + * that has already exited when CONFIG_SCHED_CHILD_STATUS is set, and that + * depends on CONFIG_SCHED_HAVE_PARENT. With two instances running for + * the same length of time, the second has always exited by the time the + * first waitpid() returns, so its status is simply gone. A file survives + * the task, and survives the module being unloaded. + * + ****************************************************************************/ + +static void record(const char *path, int value) +{ + char text[16]; + int len; + int fd; + + if (path == NULL) + { + return; + } + + len = snprintf(text, sizeof(text), "%d", value); + + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd < 0) + { + syslog(LOG_INFO, "[user] cannot record to %s\n", path); + return; + } + + /* xipfs wants the size declared up front so it can reserve one + * contiguous extent. + */ + + if (ftruncate(fd, len) >= 0) + { + write(fd, text, len); + } + + close(fd); +} + +extern "C" int main(int argc, char *argv[]) +{ + int seed = (argc > 1) ? atoi(argv[1]) : 1; + int fails = 0; + int i; + + /* Optional second argument: a path for the library's destructor to record + * its final total in. A destructor runs at unload, after this task is + * gone, so leaving a file behind is the only way a test can observe that + * it ran at all. The demo omits it and reads the log instead. + */ + + if (argc > 2) + { + shape_marker(argv[2]); + } + + syslog(LOG_INFO, "[user %d] own ctor ran: %s, library ctor ran: %s, " + "library first: %s\n", + seed, + g_self.constructed() ? "yes" : "NO", + shape_constructed() ? "yes" : "NO", + g_self.libwasready() ? "yes" : "NO"); + + /* Every check runs and contributes a bit, rather than the first failure + * returning early. A caller that reports these individually can then say + * which property broke instead of just that something did -- and none of + * its assertions pass merely because an earlier one stopped the run. + */ + + if (!g_self.constructed()) + { + fails |= USER_FAIL_OWN_CTOR; + } + + if (!shape_constructed()) + { + fails |= USER_FAIL_LIB_CTOR; + } + + if (!g_self.libwasready()) + { + fails |= USER_FAIL_ORDER; + } + + for (i = 0; i < 3; i++) + { + shape_add(seed); + usleep(100000); + } + + if (shape_total() != seed * 3) + { + fails |= USER_FAIL_PRIVATE; + } + + syslog(LOG_INFO, "[user %d] library total = %d (expected %d) -- %s\n", + seed, shape_total(), seed * 3, + fails == 0 ? "PASS" : "FAIL"); + + /* Optional third argument: where to record the bitmask, for a caller that + * cannot rely on the exit status surviving. See record() above. + */ + + if (argc > 3) + { + record(argv[3], fails); + } + + return fails; +} diff --git a/examples/fdpicxip/modules/funcdesc.c b/examples/fdpicxip/modules/funcdesc.c new file mode 100644 index 00000000000..85071547437 --- /dev/null +++ b/examples/fdpicxip/modules/funcdesc.c @@ -0,0 +1,156 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/funcdesc.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Exercises R_ARM_FUNCDESC -- the relocation that asks the loader to + * manufacture a function descriptor and hand back its address. + * + * It is emitted for an *address-taken imported* function, which is a + * different thing from a called one. A call gets a PLT entry and an + * R_ARM_FUNCDESC_VALUE relocation on a descriptor the linker already laid + * out; taking the address instead needs a pointer to a descriptor that does + * not exist yet, so the loader carves one out of the pool it reserves + * behind the writable segment. No other module here emits one, which is + * why this exists. + * + * Every pointer here is called *through*, not merely printed: a descriptor + * with the wrong entry or the wrong GOT half only shows up when it is + * branched through. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +typedef int (*atoifn)(const char *); +typedef void *(*memcpyfn)(void *, const void *, size_t); +typedef int (*strcmpfn)(const char *, const char *); +typedef void (*qsortfn)(void *, size_t, size_t, + int (*)(const void *, const void *)); + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +/* volatile is load bearing, and the reason is worth knowing before anyone + * tidies it away. + * + * Without it these are static pointers that are never written, so GCC + * constant-propagates them, turns every indirect call back into a direct + * one, and deletes the variables. The descriptor address then never has to + * materialise, the linker emits R_ARM_FUNCDESC_VALUE for the direct calls + * instead, and not one R_ARM_FUNCDESC survives -- the module still builds, + * still runs, still passes, and tests nothing it claims to. + * + * volatile forces each pointer to be loaded from memory at the point of + * call, which is what makes the slot genuinely hold the address of a + * descriptor the loader has to supply. + */ + +static atoifn volatile g_atoi = atoi; +static memcpyfn volatile g_memcpy = memcpy; +static strcmpfn volatile g_strcmp = strcmp; +static qsortfn volatile g_qsort = qsort; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +/* A local function's address is R_ARM_FUNCDESC_VALUE, not FUNCDESC -- the + * linker can lay that descriptor out itself. Kept here so the module + * exercises both kinds side by side. + */ + +static int cmp_int(const void *a, const void *b) +{ + return *(const int *)a - *(const int *)b; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, char *argv[]) +{ + int v[5] = + { + 5, 3, 1, 4, 2 + }; + + int copy[5]; + char buf[8]; + int seed; + int fails = 0; + int i; + + seed = g_atoi((argc > 1) ? argv[1] : "7"); + if (seed != 7 && seed != 1 && seed != 2) + { + syslog(LOG_INFO, "[funcdesc] FAIL atoi through a descriptor: %d\n", + seed); + fails++; + } + + g_memcpy(copy, v, sizeof(v)); + for (i = 0; i < 5; i++) + { + if (copy[i] != v[i]) + { + syslog(LOG_INFO, "[funcdesc] FAIL memcpy through a descriptor\n"); + fails++; + break; + } + } + + g_memcpy(buf, "abcdef", 7); + if (g_strcmp(buf, "abcdef") != 0) + { + syslog(LOG_INFO, "[funcdesc] FAIL strcmp through a descriptor\n"); + fails++; + } + + /* A manufactured descriptor for qsort, called with a descriptor for a + * function of our own -- so the firmware calls back into module code + * that has to arrive with this module's data base in the FDPIC register. + */ + + g_qsort(copy, 5, sizeof(int), cmp_int); + for (i = 0; i < 5; i++) + { + if (copy[i] != i + 1) + { + syslog(LOG_INFO, "[funcdesc] FAIL qsort through a descriptor\n"); + fails++; + break; + } + } + + syslog(LOG_INFO, "[funcdesc] seed %d, %d failures\n", seed, fails); + return fails == 0 ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/examples/fdpicxip/modules/lazymod.c b/examples/fdpicxip/modules/lazymod.c new file mode 100644 index 00000000000..40a21d6fc9e --- /dev/null +++ b/examples/fdpicxip/modules/lazymod.c @@ -0,0 +1,45 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/lazymod.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Linked without -z now (BINDNOW= in the makefile), so its imported function + * descriptors land in DT_JMPREL instead of DT_REL. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, char *argv[]) +{ + int seed = (argc > 1) ? atoi(argv[1]) : 1; + + syslog(LOG_INFO, "[lazymod] called through a DT_JMPREL descriptor, " + "seed %d\n", seed); + return 0; +} diff --git a/examples/fdpicxip/modules/libcounter.c b/examples/fdpicxip/modules/libcounter.c new file mode 100644 index 00000000000..7d4c16677ff --- /dev/null +++ b/examples/fdpicxip/modules/libcounter.c @@ -0,0 +1,58 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/libcounter.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* A shared library with its own state. + * + * g_calls is the interesting part: it lives in the library's writable + * segment, and each task that loads the library gets a private copy. The + * library's code, meanwhile, is mapped once and executed in place. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static int g_calls; + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int counter_bump(int by); +int counter_total(void); + +int counter_bump(int by) +{ + g_calls += by; + return g_calls; +} + +int counter_total(void) +{ + return g_calls; +} diff --git a/examples/fdpicxip/modules/libshape.cpp b/examples/fdpicxip/modules/libshape.cpp new file mode 100644 index 00000000000..1cab840ef59 --- /dev/null +++ b/examples/fdpicxip/modules/libshape.cpp @@ -0,0 +1,160 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/libshape.cpp + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* A C++ shared library, executed in place out of flash. + * + * The point of this file is g_registry. It is a global object with a real + * constructor, and the constructor is the only thing that ever writes + * m_magic. If the loader does not walk DT_INIT_ARRAY, the object simply + * stays in .bss and every field reads back zero -- the library still loads, + * still links, and still runs, and quietly answers wrong. That is why the + * demo checks for a magic rather than just printing a total: the failure + * this is here to catch does not announce itself. + * + * m_total is the second half: it lives in the library's writable segment, + * which is copied once per running instance, so two tasks sharing this + * library's flash-resident code still count independently. + */ + +#include +#include +#include +#include +#include + +#define SHAPE_MAGIC 0x5ba9e0 + +class Registry +{ +public: + Registry() : m_magic(SHAPE_MAGIC), m_total(0), m_adds(0) + { + m_marker[0] = '\0'; + syslog(LOG_INFO, " [libshape] Registry() ran\n"); + } + + /* Runs last of the two objects, because destruction mirrors construction + * and this library was constructed first. So a marker written here is + * evidence that the whole DT_FINI_ARRAY chain ran, not just the module's + * half -- which is why the marker is written from the library rather than + * from the module that knows the path. + */ + + ~Registry() + { + syslog(LOG_INFO, " [libshape] ~Registry() ran after %d adds\n", m_adds); + + if (m_marker[0] != '\0') + { + char text[16]; + int len; + int fd; + + len = snprintf(text, sizeof(text), "%d", m_total); + + fd = open(m_marker, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (fd >= 0) + { + /* xipfs wants the size declared up front so it can reserve one + * contiguous extent. + */ + + if (ftruncate(fd, len) >= 0) + { + write(fd, text, len); + } + + close(fd); + } + else + { + syslog(LOG_INFO, " [libshape] marker %s failed\n", m_marker); + } + } + } + + /* Where ~Registry() should record its final total. Optional: the demo + * does not set one and simply logs instead. + */ + + void marker(const char *path) + { + strlcpy(m_marker, path, sizeof(m_marker)); + } + + bool constructed() const + { + return m_magic == SHAPE_MAGIC; + } + + int add(int by) + { + m_adds++; + m_total += by; + return m_total; + } + + int total() const + { + return m_total; + } + +private: + int m_magic; + int m_total; + int m_adds; + char m_marker[64]; +}; + +static Registry g_registry; + +/* C linkage, because the module imports these by name and the loader + * matches dynamic symbols as plain strings. + */ + +extern "C" +{ + int shape_add(int by); + int shape_total(void); + bool shape_constructed(void); + void shape_marker(const char *path); +} + +int shape_add(int by) +{ + return g_registry.add(by); +} + +void shape_marker(const char *path) +{ + g_registry.marker(path); +} + +int shape_total(void) +{ + return g_registry.total(); +} + +bool shape_constructed(void) +{ + return g_registry.constructed(); +} diff --git a/examples/fdpicxip/modules/missingsym.c b/examples/fdpicxip/modules/missingsym.c new file mode 100644 index 00000000000..184675dde49 --- /dev/null +++ b/examples/fdpicxip/modules/missingsym.c @@ -0,0 +1,40 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/missingsym.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* A module that imports a firmware symbol which does not exist. It links + * cleanly -- the symbol simply becomes an undefined import resolved at load + * -- so the loader is the only thing that can catch it, when resolution + * fails rather than at link time. This is why the build runs fdpic-verify + * by default; this module is the one that deliberately does not pass it, so + * it is linked without that check. + */ + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +extern int __xipfs_test_nonexistent(int value); + +int main(int argc, char *argv[]) +{ + return __xipfs_test_nonexistent(argc); +} diff --git a/examples/fdpicxip/modules/qsorter.c b/examples/fdpicxip/modules/qsorter.c new file mode 100644 index 00000000000..3dead3f0392 --- /dev/null +++ b/examples/fdpicxip/modules/qsorter.c @@ -0,0 +1,89 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/qsorter.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Demonstrates the two things worth knowing about NuttX FDPIC modules. + * + * 1. qsort() runs in the firmware and calls back into compare(), which + * lives here. That works because the firmware reserves the FDPIC + * register, so this module's data base survives the call in, and + * because libc resolves the callback descriptor on the way back out. + * + * 2. g_data is module data. Every running instance gets a private copy, + * while the code itself is shared and executed in place from flash. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define N 8 + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static int g_data[N]; + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static int compare(const void *a, const void *b) +{ + return *(const int *)a - *(const int *)b; +} + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, char *argv[]) +{ + int seed = (argc > 1) ? atoi(argv[1]) : 0; + int i; + + for (i = 0; i < N; i++) + { + g_data[i] = (N - i) * 10 + seed; + } + + /* Overlap with any other instance, so shared data would show up as + * corruption rather than passing by luck. + */ + + usleep(300000); + + qsort(g_data, N, sizeof(int), compare); + + syslog(LOG_INFO, "[inst %d] %d %d %d %d %d %d %d %d\n", seed, + g_data[0], g_data[1], g_data[2], g_data[3], + g_data[4], g_data[5], g_data[6], g_data[7]); + return 0; +} diff --git a/examples/fdpicxip/modules/user.c b/examples/fdpicxip/modules/user.c new file mode 100644 index 00000000000..bd82dbf3152 --- /dev/null +++ b/examples/fdpicxip/modules/user.c @@ -0,0 +1,68 @@ +/**************************************************************************** + * apps/examples/fdpicxip/modules/user.c + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Uses libcounter.so. Two instances run concurrently: if the library's + * data were shared between them the totals would interleave. + * + * libcounter is also a *leaf* library -- it calls nothing outside itself, + * so it has no PLT and therefore no DT_PLTGOT. The loader has to fall back + * to PT_DYNAMIC vaddr + memsz to find its GOT. If that fallback is wrong + * the library cannot reach its own globals, which is exactly what the total + * below would expose. + */ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include +#include +#include + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +extern int counter_bump(int by); +extern int counter_total(void); + +int main(int argc, char *argv[]) +{ + int seed = (argc > 1) ? atoi(argv[1]) : 0; + int i; + + for (i = 0; i < 3; i++) + { + counter_bump(seed); + usleep(100000); + } + + syslog(LOG_INFO, "[user %d] library total = %d (expected %d) -- %s\n", + seed, counter_total(), seed * 3, + counter_total() == seed * 3 ? "PASS" : "FAIL"); + + /* Reported through the exit status as well as the log, so a test can + * assert on it rather than a human reading the console. + */ + + return counter_total() == seed * 3 ? EXIT_SUCCESS : EXIT_FAILURE; +} diff --git a/examples/fdpicxip/qsorter_bin.h b/examples/fdpicxip/qsorter_bin.h new file mode 100644 index 00000000000..6e1f39c006c --- /dev/null +++ b/examples/fdpicxip/qsorter_bin.h @@ -0,0 +1,268 @@ +/**************************************************************************** + * apps/examples/fdpicxip/qsorter_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from qsorter.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_qsorter_nxf[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa1, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, + 0x58, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, + 0x58, 0x13, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x58, 0x03, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa1, 0x02, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x75, + 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x00, + 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, + 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, + 0x44, 0x5f, 0x5f, 0x00, 0x14, 0x14, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xec, 0x13, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0xf4, 0x13, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0xfc, 0x13, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0x04, 0x14, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0x0c, 0x14, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x1c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, + 0x70, 0xb5, 0x01, 0x28, 0x4e, 0x46, 0x88, 0xb0, 0x34, 0xdd, 0x48, 0x68, + 0xff, 0xf7, 0xee, 0xff, 0xb1, 0x46, 0x1a, 0x4b, 0x00, 0xf1, 0x50, 0x05, + 0x59, 0xf8, 0x03, 0x30, 0x43, 0xf8, 0x04, 0x5b, 0x0a, 0x3d, 0x85, 0x42, + 0xfa, 0xd1, 0x14, 0x48, 0xff, 0xf7, 0xc2, 0xff, 0xb1, 0x46, 0x13, 0x4b, + 0x04, 0x22, 0x59, 0xf8, 0x03, 0x40, 0x12, 0x4b, 0x20, 0x46, 0x4b, 0x44, + 0x08, 0x21, 0xff, 0xf7, 0xc1, 0xff, 0xe3, 0x69, 0x0f, 0x49, 0x06, 0x93, + 0xa3, 0x69, 0xb1, 0x46, 0x05, 0x93, 0x63, 0x69, 0x2a, 0x46, 0x04, 0x93, + 0x23, 0x69, 0x06, 0x20, 0x03, 0x93, 0xe3, 0x68, 0x79, 0x44, 0x02, 0x93, + 0xa3, 0x68, 0x01, 0x93, 0x63, 0x68, 0x00, 0x93, 0x23, 0x68, 0xff, 0xf7, + 0xb5, 0xff, 0x00, 0x20, 0x08, 0xb0, 0x70, 0xbd, 0x00, 0x20, 0xcc, 0xe7, + 0xe0, 0x93, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0x0b, 0x68, 0xc0, 0x1a, 0x70, 0x47, + 0x5b, 0x69, 0x6e, 0x73, 0x74, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x25, 0x64, + 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, + 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, + 0xe0, 0x13, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xe0, 0x13, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x18, 0x14, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, + 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, + 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, + 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, + 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, + 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, + 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, + 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, + 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0b, 0x00, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x18, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x14, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x2a, 0x00, 0x00, 0x00, + 0x58, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, + 0x33, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0a, 0x00, 0x16, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x50, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x64, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x74, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x78, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x88, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x8c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x9c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x66, 0x00, 0x00, 0x00, 0xa1, 0x02, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x73, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x65, 0x00, 0x24, 0x64, 0x00, 0x2e, 0x4c, 0x41, + 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, 0x67, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x75, 0x73, 0x6c, + 0x65, 0x65, 0x70, 0x00, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x00, 0x5f, 0x5f, + 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, + 0x5f, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, + 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, + 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, + 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, + 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, + 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, + 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, + 0x6c, 0x74, 0x00, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, + 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, + 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, + 0x50, 0x02, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa0, 0x02, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x58, 0x13, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xe0, 0x13, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x18, 0x14, 0x00, 0x00, + 0x18, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x04, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8c, 0x04, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_qsorter_nxf_len = 2768; diff --git a/examples/fdpicxip/user_bin.h b/examples/fdpicxip/user_bin.h new file mode 100644 index 00000000000..fd417418cfc --- /dev/null +++ b/examples/fdpicxip/user_bin.h @@ -0,0 +1,265 @@ +/**************************************************************************** + * apps/examples/fdpicxip/user_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from user.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_user[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2c, 0x08, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x94, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x94, 0x13, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x94, 0x03, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, 0x70, 0x00, + 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x79, 0x73, + 0x6c, 0x6f, 0x67, 0x00, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, + 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, + 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, + 0x5f, 0x5f, 0x00, 0x00, 0x30, 0x14, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x00, + 0x38, 0x14, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x40, 0x14, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0x50, 0x14, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x14, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x2c, 0x00, 0x00, 0x00, + 0xf0, 0xb5, 0x01, 0x28, 0x4c, 0x46, 0x85, 0xb0, 0x2f, 0xdd, 0x48, 0x68, + 0xff, 0xf7, 0xee, 0xff, 0xa1, 0x46, 0x05, 0x46, 0x03, 0x26, 0x17, 0x4b, + 0x03, 0x93, 0x28, 0x46, 0xff, 0xf7, 0xc8, 0xff, 0x03, 0x98, 0xa1, 0x46, + 0xff, 0xf7, 0xba, 0xff, 0x01, 0x3e, 0xa1, 0x46, 0xf5, 0xd1, 0xff, 0xf7, + 0xc9, 0xff, 0xa1, 0x46, 0x07, 0x46, 0xff, 0xf7, 0xc5, 0xff, 0x05, 0xeb, + 0x45, 0x06, 0x86, 0x42, 0xa1, 0x46, 0x14, 0xd1, 0x0c, 0x4a, 0x7a, 0x44, + 0x0c, 0x49, 0x3b, 0x46, 0xcd, 0xe9, 0x00, 0x62, 0x79, 0x44, 0x2a, 0x46, + 0x06, 0x20, 0xff, 0xf7, 0xbf, 0xff, 0xa1, 0x46, 0xff, 0xf7, 0xb2, 0xff, + 0x30, 0x1a, 0x18, 0xbf, 0x01, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x25, + 0xd2, 0xe7, 0x04, 0x4a, 0x7a, 0x44, 0xe9, 0xe7, 0xa0, 0x86, 0x01, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x50, 0x41, 0x53, 0x53, 0x00, 0x46, 0x41, 0x49, 0x4c, 0x00, 0x5b, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x25, 0x64, 0x20, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x64, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, + 0x24, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, + 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, + 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, + 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, + 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, + 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, + 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, + 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, + 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, + 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x08, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0e, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x17, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x94, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xbc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x24, + 0x64, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x75, 0x73, 0x6c, + 0x65, 0x65, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x62, 0x75, 0x6d, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, + 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, + 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x00, 0x2e, 0x73, + 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, + 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, + 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, + 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, + 0x44, 0x02, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6c, 0x02, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x24, 0x04, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x04, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x07, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x07, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_user_len = 2732; diff --git a/testing/fs/xipfs/Kconfig b/testing/fs/xipfs/Kconfig index 8d4350d9a0d..bccc6c4bc00 100644 --- a/testing/fs/xipfs/Kconfig +++ b/testing/fs/xipfs/Kconfig @@ -14,14 +14,21 @@ config TESTING_FS_XIPFS of the metadata commit, and release of XIP pins when a task dies without unmapping. + With CONFIG_FDPIC it also loads modules out of the filesystem and + checks the loader properties that otherwise fail silently: global + constructors running in dependency order, per-instance data, and + the relocation paths nothing else reaches. + Takes an optional section name to run just one part, since the power loss sweeps take minutes and everything else takes seconds: xipfs_test everything xipfs_test xip just the execute-in-place mapping tests + xipfs_test fdpic just the module loading tests Sections: basic writeonce strict xip multimap crosstask teardown - dirs defrag powerloss powertorn unlink dirloss defraglos + fdpic reject dirs defrag powerloss powertorn unlink dirloss + defraglos The power loss sections need CONFIG_FS_XIPFS_FAULT_INJECT. diff --git a/testing/fs/xipfs/callback_bin.h b/testing/fs/xipfs/callback_bin.h new file mode 100644 index 00000000000..a54d625ef79 --- /dev/null +++ b/testing/fs/xipfs/callback_bin.h @@ -0,0 +1,748 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/callback_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from callback.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_callback[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xc9, 0x07, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xac, 0x1e, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x0e, 0x00, 0x00, + 0xac, 0x0e, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0xac, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xc9, 0x07, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xa8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x73, 0x74, 0x72, 0x63, 0x6d, 0x70, 0x00, 0x6d, 0x61, 0x69, 0x6e, + 0x00, 0x6d, 0x71, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x6d, 0x65, 0x6d, + 0x73, 0x65, 0x74, 0x00, 0x6d, 0x71, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, + 0x79, 0x00, 0x6d, 0x71, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x00, 0x75, 0x73, + 0x6c, 0x65, 0x65, 0x70, 0x00, 0x6d, 0x71, 0x5f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x00, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x00, 0x6d, 0x71, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x6d, + 0x71, 0x5f, 0x75, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x00, 0x74, 0x69, 0x6d, + 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x73, 0x79, + 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x72, + 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x00, 0x71, 0x73, 0x6f, 0x72, + 0x74, 0x00, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x00, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x00, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x00, 0x72, 0x61, 0x69, 0x73, 0x65, 0x00, 0x74, 0x61, 0x73, 0x6b, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x70, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x6f, 0x6e, 0x63, 0x65, 0x00, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x00, 0x73, 0x63, 0x61, 0x6e, 0x64, + 0x69, 0x72, 0x00, 0x66, 0x72, 0x65, 0x65, 0x00, 0x5f, 0x5f, 0x52, 0x4f, + 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, + 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, + 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x11, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xb8, 0x11, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x94, 0x10, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x9c, 0x10, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0xa4, 0x10, 0x00, 0x00, 0xa4, 0x09, 0x00, 0x00, + 0xac, 0x10, 0x00, 0x00, 0xa4, 0x0a, 0x00, 0x00, 0xb4, 0x10, 0x00, 0x00, + 0xa4, 0x0b, 0x00, 0x00, 0xbc, 0x10, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0xc4, 0x10, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0xcc, 0x10, 0x00, 0x00, + 0xa4, 0x0e, 0x00, 0x00, 0xd4, 0x10, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x00, + 0xdc, 0x10, 0x00, 0x00, 0xa4, 0x10, 0x00, 0x00, 0xe4, 0x10, 0x00, 0x00, + 0xa4, 0x11, 0x00, 0x00, 0xec, 0x10, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, + 0xf4, 0x10, 0x00, 0x00, 0xa4, 0x13, 0x00, 0x00, 0xfc, 0x10, 0x00, 0x00, + 0xa4, 0x14, 0x00, 0x00, 0x04, 0x11, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, + 0x0c, 0x11, 0x00, 0x00, 0xa4, 0x17, 0x00, 0x00, 0x14, 0x11, 0x00, 0x00, + 0xa4, 0x1a, 0x00, 0x00, 0x1c, 0x11, 0x00, 0x00, 0xa4, 0x1b, 0x00, 0x00, + 0x24, 0x11, 0x00, 0x00, 0xa4, 0x1c, 0x00, 0x00, 0x2c, 0x11, 0x00, 0x00, + 0xa4, 0x1d, 0x00, 0x00, 0x34, 0x11, 0x00, 0x00, 0xa4, 0x1e, 0x00, 0x00, + 0x3c, 0x11, 0x00, 0x00, 0xa4, 0x1f, 0x00, 0x00, 0x44, 0x11, 0x00, 0x00, + 0xa4, 0x20, 0x00, 0x00, 0x4c, 0x11, 0x00, 0x00, 0xa4, 0x21, 0x00, 0x00, + 0x54, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, 0x5c, 0x11, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0x64, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, + 0x6c, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, 0x74, 0x11, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0x7c, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, + 0x84, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, 0x8c, 0x11, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0x94, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, + 0x9c, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, 0xa4, 0x11, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0xac, 0x11, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x4c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x54, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x5c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x64, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x6c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x74, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x7c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x84, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x8c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x94, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x9c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0xa4, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0xac, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0xbc, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0xc4, 0x00, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x4d, 0xdf, 0xf8, 0x78, 0x34, 0xac, 0xb0, 0x59, 0xf8, + 0x03, 0x50, 0x0e, 0xae, 0x2f, 0x46, 0x8c, 0x46, 0x01, 0x28, 0x0f, 0xcf, + 0x0f, 0xc6, 0x3b, 0x68, 0x05, 0xf1, 0x14, 0x05, 0x33, 0x60, 0x1d, 0xae, + 0x0f, 0xcd, 0x0f, 0xc6, 0x95, 0xe8, 0x07, 0x00, 0x4c, 0x46, 0x86, 0xe8, + 0x07, 0x00, 0x40, 0xf3, 0x03, 0x81, 0xdf, 0xf8, 0x4c, 0x14, 0xdc, 0xf8, + 0x04, 0x00, 0x79, 0x44, 0xff, 0xf7, 0x98, 0xff, 0xa1, 0x46, 0x07, 0x46, + 0x00, 0x28, 0x40, 0xf0, 0xf7, 0x80, 0x01, 0x25, 0x0c, 0x90, 0xdf, 0xf8, + 0x34, 0x04, 0x0a, 0xab, 0x4f, 0xf4, 0xd2, 0x72, 0x42, 0x21, 0x78, 0x44, + 0xcd, 0xe9, 0x0a, 0x55, 0xff, 0xf7, 0xa4, 0xff, 0x43, 0x1c, 0xa1, 0x46, + 0x06, 0x46, 0x00, 0xf0, 0xe3, 0x80, 0x10, 0x22, 0x39, 0x46, 0x19, 0xa8, + 0xff, 0xf7, 0x68, 0xff, 0x02, 0x23, 0xa1, 0x46, 0x18, 0x93, 0xdf, 0xf8, + 0x08, 0x34, 0x0d, 0xf1, 0x60, 0x08, 0x4b, 0x44, 0x1b, 0x93, 0x5a, 0x23, + 0x41, 0x46, 0x30, 0x46, 0x1a, 0x93, 0xff, 0xf7, 0x95, 0xff, 0xb8, 0x42, + 0xa1, 0x46, 0x22, 0xdb, 0xfb, 0x49, 0x2a, 0x46, 0x3b, 0x46, 0x30, 0x46, + 0x79, 0x44, 0xff, 0xf7, 0xff, 0xfe, 0x32, 0x25, 0xa1, 0x46, 0xf8, 0x4b, + 0x59, 0xf8, 0x03, 0x30, 0x5b, 0x69, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, + 0xff, 0xf7, 0xcc, 0xfe, 0x01, 0x3d, 0xa1, 0x46, 0xf3, 0xd1, 0x00, 0x23, + 0x01, 0x22, 0x30, 0x46, 0x24, 0xa9, 0xff, 0xf7, 0xd7, 0xfe, 0xa1, 0x46, + 0xee, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x5d, 0x69, 0x5a, 0x3d, 0x18, 0xbf, + 0x01, 0x25, 0x10, 0x22, 0x00, 0x21, 0x14, 0xa8, 0xff, 0xf7, 0x2e, 0xff, + 0xa1, 0x46, 0xe9, 0x4b, 0x00, 0x22, 0x4b, 0x44, 0x13, 0x93, 0x02, 0x23, + 0x13, 0xa9, 0x0a, 0x20, 0x16, 0x93, 0xff, 0xf7, 0x19, 0xff, 0x00, 0x27, + 0x0a, 0x23, 0x4f, 0xf0, 0x01, 0x0b, 0xa1, 0x46, 0x41, 0x46, 0x30, 0x46, + 0xcd, 0xe9, 0x1a, 0x77, 0xcd, 0xe9, 0x18, 0xb3, 0x1c, 0x97, 0xff, 0xf7, + 0x51, 0xff, 0xb8, 0x42, 0xa1, 0x46, 0x02, 0xda, 0x45, 0xf0, 0x02, 0x05, + 0x21, 0xe0, 0xdb, 0x49, 0x3b, 0x46, 0x5a, 0x46, 0x30, 0x46, 0x79, 0x44, + 0xff, 0xf7, 0xb8, 0xfe, 0x32, 0x27, 0xa1, 0x46, 0xd4, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0x1b, 0x69, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, + 0x85, 0xfe, 0x01, 0x3f, 0xa1, 0x46, 0xf3, 0xd1, 0x00, 0x23, 0x01, 0x22, + 0x30, 0x46, 0x24, 0xa9, 0xff, 0xf7, 0x90, 0xfe, 0xa1, 0x46, 0xcb, 0x4b, + 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x69, 0x0a, 0x2b, 0xda, 0xd1, 0x30, 0x46, + 0xff, 0xf7, 0x68, 0xfe, 0xc9, 0x48, 0xa1, 0x46, 0x78, 0x44, 0xff, 0xf7, + 0xc7, 0xfe, 0x10, 0x22, 0xa1, 0x46, 0x00, 0x21, 0x19, 0xa8, 0xff, 0xf7, + 0xdf, 0xfe, 0x02, 0x23, 0xa1, 0x46, 0x18, 0x93, 0xc3, 0x4b, 0x41, 0x46, + 0x4b, 0x44, 0x1b, 0x93, 0xa5, 0x23, 0x01, 0x20, 0x09, 0xaa, 0x1a, 0x93, + 0xff, 0xf7, 0x46, 0xfe, 0x00, 0x28, 0xa1, 0x46, 0x16, 0xda, 0x45, 0xf0, + 0x04, 0x05, 0xb8, 0x4b, 0x59, 0xf8, 0x03, 0x10, 0x4a, 0x69, 0x0b, 0x69, + 0x88, 0x69, 0x00, 0x2d, 0x37, 0xd1, 0xb9, 0x49, 0x79, 0x44, 0xcd, 0xe9, + 0x00, 0x01, 0xb8, 0x49, 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0xc6, 0xfe, + 0x28, 0x46, 0x2c, 0xb0, 0xbd, 0xe8, 0xf0, 0x8d, 0x00, 0x22, 0x00, 0x23, + 0xcd, 0xe9, 0x28, 0x23, 0xcd, 0xe9, 0x24, 0x23, 0x00, 0x23, 0xa4, 0x49, + 0x09, 0x98, 0x2a, 0x91, 0x24, 0xaa, 0x19, 0x46, 0x26, 0x93, 0xff, 0xf7, + 0xd1, 0xfe, 0x32, 0x26, 0xa1, 0x46, 0xa5, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x9b, 0x69, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, 0x26, 0xfe, + 0x01, 0x3e, 0xa1, 0x46, 0xf3, 0xd1, 0x9f, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x9b, 0x69, 0xa5, 0x2b, 0x04, 0xd1, 0x09, 0x98, 0xff, 0xf7, 0x38, 0xfe, + 0xa1, 0x46, 0xc2, 0xe7, 0x45, 0xf0, 0x04, 0x05, 0xf7, 0xe7, 0x9f, 0x49, + 0x79, 0x44, 0xc6, 0xe7, 0x07, 0x25, 0xcb, 0xe7, 0x9d, 0x4b, 0x04, 0x22, + 0x4b, 0x44, 0x05, 0x21, 0x0e, 0xa8, 0xff, 0xf7, 0x13, 0xfe, 0xa1, 0x46, + 0x91, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x68, 0x00, 0x2b, 0x00, 0xf0, + 0xf6, 0x80, 0x0e, 0x9b, 0x01, 0x2b, 0x40, 0xf0, 0xf2, 0x80, 0x12, 0x9d, + 0x05, 0x3d, 0x18, 0xbf, 0x01, 0x25, 0x93, 0x4a, 0x00, 0x21, 0x4a, 0x44, + 0x07, 0x23, 0x18, 0xa8, 0xff, 0xf7, 0xd4, 0xfd, 0xa1, 0x46, 0x01, 0x46, + 0x48, 0xb9, 0x18, 0x98, 0xff, 0xf7, 0x82, 0xfe, 0xa1, 0x46, 0x83, 0x4b, + 0x59, 0xf8, 0x03, 0x30, 0x5b, 0x68, 0x07, 0x2b, 0x01, 0xd0, 0x45, 0xf0, + 0x02, 0x05, 0x89, 0x49, 0x0a, 0x20, 0x49, 0x44, 0xff, 0xf7, 0x2e, 0xfe, + 0x01, 0x30, 0xa1, 0x46, 0x00, 0xf0, 0xd1, 0x80, 0x0a, 0x20, 0xff, 0xf7, + 0x95, 0xfe, 0x32, 0x26, 0xa1, 0x46, 0x78, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x9b, 0x68, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, 0xcc, 0xfd, + 0x01, 0x3e, 0xa1, 0x46, 0xf3, 0xd1, 0x72, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x9b, 0x68, 0x0a, 0x2b, 0x40, 0xf0, 0xb9, 0x80, 0x00, 0x23, 0x79, 0x48, + 0x00, 0x93, 0x79, 0x4b, 0x4f, 0xf4, 0x00, 0x62, 0x4b, 0x44, 0x64, 0x21, + 0x78, 0x44, 0xff, 0xf7, 0x1b, 0xfe, 0x00, 0x28, 0xa1, 0x46, 0xc0, 0xf2, + 0xad, 0x80, 0x32, 0x26, 0x66, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0xdb, 0x69, + 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, 0xa9, 0xfd, 0x01, 0x3e, + 0xa1, 0x46, 0xf3, 0xd1, 0x60, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0xdb, 0x69, + 0x00, 0x2b, 0x00, 0xf0, 0x99, 0x80, 0x10, 0x22, 0x00, 0x21, 0x25, 0xa8, + 0xff, 0xf7, 0x12, 0xfe, 0xa1, 0x46, 0x67, 0x4b, 0x00, 0x22, 0x4b, 0x44, + 0x24, 0x93, 0x02, 0x23, 0x0c, 0x20, 0x24, 0xa9, 0x27, 0x93, 0xff, 0xf7, + 0xfd, 0xfd, 0x00, 0x28, 0xa1, 0x46, 0xc0, 0xf2, 0x88, 0x80, 0x0c, 0x20, + 0xff, 0xf7, 0x46, 0xfe, 0x32, 0x26, 0xa1, 0x46, 0x50, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0xdb, 0x68, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, + 0x7d, 0xfd, 0x01, 0x3e, 0xa1, 0x46, 0xf3, 0xd1, 0x4a, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0xdb, 0x68, 0x0c, 0x2b, 0x70, 0xd1, 0x55, 0x49, 0x1d, 0xa8, + 0x49, 0x44, 0xff, 0xf7, 0xab, 0xfd, 0xa1, 0x46, 0x28, 0xb9, 0x44, 0x4b, + 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x6a, 0x01, 0x2b, 0x01, 0xd0, 0x45, 0xf0, + 0x10, 0x05, 0x00, 0x23, 0x4e, 0x49, 0x4f, 0x48, 0x49, 0x44, 0x1a, 0x46, + 0xcd, 0xe9, 0x00, 0x33, 0x78, 0x44, 0xff, 0xf7, 0x8d, 0xfd, 0x00, 0x28, + 0xa1, 0x46, 0x57, 0xdb, 0x32, 0x26, 0x39, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x5b, 0x6a, 0x33, 0xb9, 0x42, 0xf2, 0x10, 0x70, 0xff, 0xf7, 0x4e, 0xfd, + 0x01, 0x3e, 0xa1, 0x46, 0xf3, 0xd1, 0x33, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x5b, 0x6a, 0x00, 0x2b, 0x44, 0xd0, 0x00, 0x23, 0x40, 0x4a, 0x13, 0x93, + 0x40, 0x48, 0x41, 0x4b, 0x4a, 0x44, 0x4b, 0x44, 0x13, 0xa9, 0x78, 0x44, + 0xff, 0xf7, 0x80, 0xfd, 0x06, 0x1e, 0xa1, 0x46, 0x04, 0xdb, 0x29, 0x4b, + 0x59, 0xf8, 0x03, 0x30, 0x9b, 0x6a, 0x0b, 0xb9, 0x45, 0xf0, 0x40, 0x05, + 0x13, 0x9b, 0x00, 0x2b, 0x35, 0xd1, 0x24, 0x4b, 0x59, 0xf8, 0x03, 0x10, + 0x0a, 0x68, 0x4b, 0x68, 0x88, 0x68, 0xce, 0x69, 0xcf, 0x68, 0xd1, 0xf8, + 0x20, 0xc0, 0xd1, 0xf8, 0x24, 0xe0, 0xd1, 0xf8, 0x28, 0x80, 0xd1, 0xf8, + 0x2c, 0xa0, 0x00, 0x2d, 0x62, 0xd1, 0x2f, 0x49, 0x79, 0x44, 0xcd, 0xe9, + 0x06, 0xa1, 0x2e, 0x49, 0xcd, 0xe9, 0x00, 0x06, 0xcd, 0xe9, 0x04, 0xe8, + 0x06, 0x20, 0xcd, 0xe9, 0x02, 0x7c, 0x79, 0x44, 0xff, 0xf7, 0x8e, 0xfd, + 0xc6, 0xe6, 0x01, 0x25, 0x0f, 0xe7, 0x45, 0xf0, 0x04, 0x05, 0x43, 0xe7, + 0x45, 0xf0, 0x08, 0x05, 0x63, 0xe7, 0x45, 0xf0, 0x80, 0x05, 0x8b, 0xe7, + 0x45, 0xf0, 0x20, 0x05, 0xb7, 0xe7, 0x01, 0x3e, 0x50, 0xf8, 0x26, 0x00, + 0xff, 0xf7, 0xc0, 0xfd, 0xa1, 0x46, 0x00, 0x2e, 0x13, 0x98, 0xf6, 0xdc, + 0xff, 0xf7, 0xba, 0xfd, 0xa1, 0x46, 0xc2, 0xe7, 0x00, 0x2d, 0x31, 0x01, + 0x2c, 0x01, 0x00, 0x00, 0xa7, 0x05, 0x00, 0x00, 0x84, 0x05, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xb2, 0x04, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x1c, 0x04, 0x00, 0x00, + 0xa9, 0x03, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, + 0x8f, 0x02, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x55, 0x02, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, 0x04, 0x02, 0x00, 0x00, + 0x01, 0x49, 0x79, 0x44, 0x9b, 0xe7, 0x00, 0xbf, 0xef, 0x00, 0x00, 0x00, + 0x04, 0x4b, 0x00, 0x68, 0x59, 0xf8, 0x03, 0x20, 0x13, 0x68, 0x01, 0x33, + 0x13, 0x60, 0x0b, 0x68, 0xc0, 0x1a, 0x70, 0x47, 0x30, 0x01, 0x00, 0x00, + 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x58, 0x60, 0x00, 0x20, 0x70, 0x47, + 0x30, 0x01, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x98, 0x60, + 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0xd8, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, + 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x18, 0x61, 0x70, 0x47, 0x00, 0xbf, + 0x30, 0x01, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x58, 0x61, + 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0x98, 0x61, 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, + 0x01, 0x22, 0x03, 0x4b, 0x00, 0x20, 0x59, 0xf8, 0x03, 0x30, 0xda, 0x61, + 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, 0x03, 0x4b, 0x59, 0xf8, + 0x03, 0x20, 0x13, 0x6a, 0x01, 0x33, 0x13, 0x62, 0x70, 0x47, 0x00, 0xbf, + 0x30, 0x01, 0x00, 0x00, 0x01, 0x22, 0x03, 0x4b, 0x00, 0x20, 0x59, 0xf8, + 0x03, 0x30, 0x5a, 0x62, 0x70, 0x47, 0x00, 0xbf, 0x30, 0x01, 0x00, 0x00, + 0x03, 0x4b, 0x01, 0x20, 0x59, 0xf8, 0x03, 0x20, 0x93, 0x6a, 0x01, 0x33, + 0x93, 0x62, 0x70, 0x47, 0x30, 0x01, 0x00, 0x00, 0x05, 0x4b, 0x09, 0x68, + 0x59, 0xf8, 0x03, 0x20, 0x00, 0x68, 0xd3, 0x6a, 0x05, 0x31, 0x01, 0x33, + 0x05, 0x30, 0xd3, 0x62, 0xff, 0xf7, 0xce, 0xbc, 0x30, 0x01, 0x00, 0x00, + 0x50, 0x41, 0x53, 0x53, 0x00, 0x46, 0x41, 0x49, 0x4c, 0x00, 0x2f, 0x63, + 0x62, 0x6d, 0x71, 0x00, 0x78, 0x00, 0x5b, 0x63, 0x61, 0x6c, 0x6c, 0x62, + 0x61, 0x63, 0x6b, 0x5d, 0x20, 0x6d, 0x71, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x3d, 0x25, 0x23, 0x78, 0x20, 0x6d, 0x71, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x3d, 0x25, 0x64, 0x20, 0x74, 0x69, 0x6d, 0x65, + 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x3d, 0x25, 0x23, 0x78, + 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x63, 0x62, 0x74, 0x61, + 0x73, 0x6b, 0x00, 0x63, 0x62, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x00, 0x2f, + 0x6d, 0x6e, 0x74, 0x2f, 0x78, 0x69, 0x70, 0x66, 0x73, 0x00, 0x5b, 0x63, + 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x5d, 0x20, 0x71, 0x73, 0x6f, + 0x72, 0x74, 0x3d, 0x25, 0x64, 0x20, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x3d, 0x25, 0x64, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x3d, + 0x25, 0x64, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x3d, 0x25, 0x64, 0x20, 0x73, + 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x25, 0x64, 0x20, + 0x6f, 0x6e, 0x63, 0x65, 0x3d, 0x25, 0x64, 0x20, 0x73, 0x70, 0x61, 0x77, + 0x6e, 0x3d, 0x25, 0x64, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x3d, + 0x25, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x3d, 0x25, 0x64, + 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xa8, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x88, 0x10, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x04, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x11, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x21, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x31, 0x05, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x41, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x51, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x61, 0x05, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x71, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x85, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x99, 0x05, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xad, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xc1, 0x05, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x0e, 0x00, 0x00, + 0xbc, 0x11, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, + 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, + 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, + 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, + 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, + 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, + 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, + 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, + 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0c, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xc1, 0x0c, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xd4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xd8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd9, 0x0c, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xe4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xe8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0xe9, 0x0c, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xf4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xf8, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x32, 0x00, 0x00, 0x00, 0xf9, 0x0c, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x04, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x44, 0x00, 0x00, 0x00, 0x09, 0x0d, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x14, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x18, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, 0x19, 0x0d, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x24, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x28, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x67, 0x00, 0x00, 0x00, 0x29, 0x0d, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x34, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x38, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x39, 0x0d, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x48, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x4c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0x4d, 0x0d, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x5c, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x61, 0x0d, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x70, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x74, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x75, 0x0d, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x84, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x88, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x89, 0x0d, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xa0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xb4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xbc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, 0x78, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x78, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xbc, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xbc, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0xbc, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xc0, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xc4, 0x11, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xc8, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0xff, 0x00, 0x00, 0x00, 0xcc, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0x0f, 0x01, 0x00, 0x00, 0xd0, 0x11, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0xd4, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0x32, 0x01, 0x00, 0x00, 0xd8, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0x3d, 0x01, 0x00, 0x00, 0xdc, 0x11, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x48, 0x01, 0x00, 0x00, + 0xe0, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0x54, 0x01, 0x00, 0x00, 0xe4, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0x63, 0x01, 0x00, 0x00, 0xe8, 0x11, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x72, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x7b, 0x01, 0x00, 0x00, 0x88, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xa4, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xe8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0xf8, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xfc, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x20, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x24, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x38, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x48, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x4c, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x5c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x70, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x74, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x84, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x88, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x98, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x9c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0xac, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xb0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xc0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xd4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0xd8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0xe8, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xec, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xfc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x24, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x28, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3c, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x4c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x50, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x60, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x64, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x78, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x88, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x8c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x9c, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0xa0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xb0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xb4, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xc4, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x2a, 0x02, 0x00, 0x00, 0xac, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xc9, 0x07, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x41, 0x02, 0x00, 0x00, 0xa8, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x52, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x59, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x60, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x6d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7b, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x83, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x8d, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x93, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x2e, 0x63, 0x00, + 0x24, 0x74, 0x00, 0x63, 0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x00, 0x24, + 0x64, 0x00, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x69, + 0x6e, 0x00, 0x73, 0x69, 0x67, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x00, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00, 0x6d, 0x71, 0x5f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x00, 0x6d, 0x71, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x72, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x00, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6d, 0x61, 0x69, 0x6e, + 0x00, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x65, 0x00, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, 0x6d, 0x61, 0x69, 0x6e, + 0x00, 0x64, 0x69, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x00, + 0x64, 0x69, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x00, 0x2e, + 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x31, 0x00, 0x2e, 0x4c, 0x41, + 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, 0x67, 0x5f, 0x71, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x67, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, + 0x5f, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x6d, 0x71, 0x5f, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x6d, 0x71, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, + 0x5f, 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x6f, 0x6e, 0x63, 0x65, 0x5f, + 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x73, 0x70, 0x61, 0x77, 0x6e, 0x5f, + 0x72, 0x61, 0x6e, 0x00, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x67, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x5f, 0x44, + 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, + 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x74, 0x69, 0x6d, 0x65, + 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x00, 0x6d, 0x71, 0x5f, + 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, + 0x00, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x00, 0x6d, 0x71, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x5f, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x00, 0x6d, 0x71, 0x5f, 0x73, 0x65, + 0x6e, 0x64, 0x00, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x61, 0x77, + 0x6e, 0x00, 0x70, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x6e, + 0x63, 0x65, 0x00, 0x73, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x72, 0x00, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x00, 0x6d, 0x71, 0x5f, 0x75, 0x6e, 0x6c, + 0x69, 0x6e, 0x6b, 0x00, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x00, 0x73, 0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, + 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x65, 0x6d, 0x73, 0x65, 0x74, + 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, + 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, + 0x00, 0x73, 0x74, 0x72, 0x63, 0x6d, 0x70, 0x00, 0x70, 0x74, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x00, 0x74, 0x69, 0x6d, + 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x6d, + 0x71, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x6d, 0x71, 0x5f, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x00, 0x72, 0x61, 0x69, 0x73, 0x65, 0x00, 0x66, + 0x72, 0x65, 0x65, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, + 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, + 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, + 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, + 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, + 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, 0x74, 0x65, 0x78, 0x74, + 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x00, 0x2e, 0x72, 0x6f, + 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, + 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x62, 0x73, 0x73, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x88, 0x01, 0x00, 0x00, 0x88, 0x01, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xa8, 0x03, 0x00, 0x00, 0xa8, 0x03, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, + 0xb8, 0x04, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe8, 0x05, 0x00, 0x00, 0xe8, 0x05, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00, 0xc8, 0x07, 0x00, 0x00, + 0xdc, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, + 0xa4, 0x0d, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xa8, 0x0e, 0x00, 0x00, 0xa8, 0x0e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x88, 0x10, 0x00, 0x00, + 0x88, 0x10, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xbc, 0x11, 0x00, 0x00, 0xbc, 0x11, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x11, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x12, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x12, 0x00, 0x00, 0x60, 0x09, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x1b, 0x00, 0x00, + 0x98, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0x1e, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_callback_len = 8532; diff --git a/testing/fs/xipfs/counteruser_bin.h b/testing/fs/xipfs/counteruser_bin.h new file mode 100644 index 00000000000..86fb4aa9a8d --- /dev/null +++ b/testing/fs/xipfs/counteruser_bin.h @@ -0,0 +1,265 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/counteruser_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from user.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_counteruser[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2c, 0x08, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x94, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x94, 0x13, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x94, 0x03, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, 0x70, 0x00, + 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x79, 0x73, + 0x6c, 0x6f, 0x67, 0x00, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, + 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, + 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, + 0x5f, 0x5f, 0x00, 0x00, 0x30, 0x14, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x00, + 0x38, 0x14, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0x40, 0x14, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0x50, 0x14, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x14, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x2c, 0x00, 0x00, 0x00, + 0xf0, 0xb5, 0x01, 0x28, 0x4c, 0x46, 0x85, 0xb0, 0x2f, 0xdd, 0x48, 0x68, + 0xff, 0xf7, 0xee, 0xff, 0xa1, 0x46, 0x05, 0x46, 0x03, 0x26, 0x17, 0x4b, + 0x03, 0x93, 0x28, 0x46, 0xff, 0xf7, 0xc8, 0xff, 0x03, 0x98, 0xa1, 0x46, + 0xff, 0xf7, 0xba, 0xff, 0x01, 0x3e, 0xa1, 0x46, 0xf5, 0xd1, 0xff, 0xf7, + 0xc9, 0xff, 0xa1, 0x46, 0x07, 0x46, 0xff, 0xf7, 0xc5, 0xff, 0x05, 0xeb, + 0x45, 0x06, 0x86, 0x42, 0xa1, 0x46, 0x14, 0xd1, 0x0c, 0x4a, 0x7a, 0x44, + 0x0c, 0x49, 0x3b, 0x46, 0xcd, 0xe9, 0x00, 0x62, 0x79, 0x44, 0x2a, 0x46, + 0x06, 0x20, 0xff, 0xf7, 0xbf, 0xff, 0xa1, 0x46, 0xff, 0xf7, 0xb2, 0xff, + 0x30, 0x1a, 0x18, 0xbf, 0x01, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x25, + 0xd2, 0xe7, 0x04, 0x4a, 0x7a, 0x44, 0xe9, 0xe7, 0xa0, 0x86, 0x01, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x50, 0x41, 0x53, 0x53, 0x00, 0x46, 0x41, 0x49, 0x4c, 0x00, 0x5b, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x25, 0x64, 0x20, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x64, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, + 0x24, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, + 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, + 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, + 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, + 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, + 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, + 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, + 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, + 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, + 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x08, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x44, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0e, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x17, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x94, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xbc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xcc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xd1, 0x02, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x24, + 0x64, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, + 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x75, 0x73, 0x6c, + 0x65, 0x65, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x62, 0x75, 0x6d, 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, + 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, + 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x00, 0x2e, 0x73, + 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, + 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, + 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, + 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, + 0x44, 0x02, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6c, 0x02, 0x00, 0x00, 0x6c, 0x02, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00, + 0x54, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x94, 0x13, 0x00, 0x00, 0x94, 0x03, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x24, 0x14, 0x00, 0x00, + 0x24, 0x04, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x04, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x04, 0x00, 0x00, 0x60, 0x02, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x07, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x07, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_counteruser_len = 2732; diff --git a/testing/fs/xipfs/cxxuser_bin.h b/testing/fs/xipfs/cxxuser_bin.h new file mode 100644 index 00000000000..0bc7505921e --- /dev/null +++ b/testing/fs/xipfs/cxxuser_bin.h @@ -0,0 +1,400 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/cxxuser_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from cxxuser.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_cxxuser[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x81, 0x04, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x0e, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x12, 0x00, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x06, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf0, 0x06, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf4, 0x06, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x61, 0x74, + 0x6f, 0x69, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x72, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x00, 0x73, 0x79, + 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x61, + 0x64, 0x64, 0x00, 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x6e, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, + 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x00, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x6c, 0x69, + 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x73, 0x6f, 0x00, 0x5f, 0x5f, + 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xa0, 0x17, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, 0xa8, 0x17, 0x00, 0x00, + 0xa4, 0x08, 0x00, 0x00, 0xb0, 0x17, 0x00, 0x00, 0xa4, 0x09, 0x00, 0x00, + 0xb8, 0x17, 0x00, 0x00, 0xa4, 0x0a, 0x00, 0x00, 0xc0, 0x17, 0x00, 0x00, + 0xa4, 0x0b, 0x00, 0x00, 0xc8, 0x17, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, + 0xd0, 0x17, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0xd8, 0x17, 0x00, 0x00, + 0xa4, 0x11, 0x00, 0x00, 0xe0, 0x17, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, + 0xe8, 0x17, 0x00, 0x00, 0xa4, 0x13, 0x00, 0x00, 0xf0, 0x17, 0x00, 0x00, + 0xa4, 0x14, 0x00, 0x00, 0xf8, 0x17, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x4c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x54, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x5c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x64, 0x00, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x45, 0x01, 0x28, 0x4c, 0x46, 0x80, 0x46, 0x0f, 0x46, + 0x89, 0xb0, 0x40, 0xf3, 0x8e, 0x80, 0x48, 0x68, 0xff, 0xf7, 0xcc, 0xff, + 0xb8, 0xf1, 0x02, 0x0f, 0xa1, 0x46, 0x06, 0x46, 0x03, 0xd0, 0xb8, 0x68, + 0xff, 0xf7, 0xd8, 0xff, 0xa1, 0x46, 0x52, 0x4b, 0x4f, 0x4d, 0x59, 0xf8, + 0x03, 0x30, 0x1b, 0x68, 0xab, 0x42, 0x7c, 0xd1, 0xdf, 0xf8, 0x3c, 0xa1, + 0xfa, 0x44, 0xff, 0xf7, 0x8f, 0xff, 0xa1, 0x46, 0x00, 0x28, 0x78, 0xd0, + 0x4c, 0x4b, 0x7b, 0x44, 0x49, 0x4a, 0x59, 0xf8, 0x02, 0x20, 0x12, 0x79, + 0x00, 0x2a, 0x73, 0xd0, 0x49, 0x4a, 0x7a, 0x44, 0x49, 0x49, 0xcd, 0xe9, + 0x00, 0x32, 0x06, 0x20, 0x53, 0x46, 0x32, 0x46, 0x79, 0x44, 0xff, 0xf7, + 0x97, 0xff, 0xa1, 0x46, 0x40, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x68, + 0x5d, 0x1b, 0x18, 0xbf, 0x01, 0x25, 0xff, 0xf7, 0x6f, 0xff, 0xa1, 0x46, + 0x08, 0xb9, 0x45, 0xf0, 0x02, 0x05, 0x3a, 0x4b, 0x59, 0xf8, 0x03, 0x30, + 0x1b, 0x79, 0x0b, 0xb9, 0x45, 0xf0, 0x04, 0x05, 0x4f, 0xf0, 0x03, 0x0a, + 0x34, 0x4b, 0x03, 0x93, 0x30, 0x46, 0xff, 0xf7, 0x35, 0xff, 0x03, 0x98, + 0xa1, 0x46, 0xff, 0xf7, 0x45, 0xff, 0xba, 0xf1, 0x01, 0x0a, 0xa1, 0x46, + 0xf4, 0xd1, 0xff, 0xf7, 0x49, 0xff, 0x06, 0xeb, 0x46, 0x0a, 0xa1, 0x46, + 0x50, 0x45, 0x18, 0xbf, 0x45, 0xf0, 0x08, 0x05, 0xff, 0xf7, 0x40, 0xff, + 0xa1, 0x46, 0x03, 0x46, 0x00, 0x2d, 0x38, 0xd1, 0x2c, 0x4a, 0x7a, 0x44, + 0x2c, 0x49, 0xcd, 0xe9, 0x00, 0xa2, 0x06, 0x20, 0x32, 0x46, 0x79, 0x44, + 0xff, 0xf7, 0x5a, 0xff, 0xb8, 0xf1, 0x03, 0x0f, 0xa1, 0x46, 0x1a, 0xdd, + 0xff, 0x68, 0xc7, 0xb1, 0x26, 0x4a, 0x2b, 0x46, 0x10, 0x21, 0x7a, 0x44, + 0x04, 0xa8, 0xff, 0xf7, 0x11, 0xff, 0x4f, 0xf4, 0xd2, 0x72, 0xa1, 0x46, + 0x82, 0x46, 0x40, 0xf2, 0x41, 0x21, 0x38, 0x46, 0xff, 0xf7, 0x58, 0xff, + 0x06, 0x1e, 0xa1, 0x46, 0x18, 0xda, 0x1e, 0x49, 0x3a, 0x46, 0x06, 0x20, + 0x79, 0x44, 0xff, 0xf7, 0x3b, 0xff, 0x28, 0x46, 0x09, 0xb0, 0xbd, 0xe8, + 0xf0, 0x85, 0x01, 0x26, 0x7b, 0xe7, 0xdf, 0xf8, 0x64, 0xa0, 0xfa, 0x44, + 0x81, 0xe7, 0x18, 0x4b, 0x7b, 0x44, 0x85, 0xe7, 0x17, 0x4a, 0x7a, 0x44, + 0x8a, 0xe7, 0x17, 0x4a, 0x7a, 0x44, 0xc5, 0xe7, 0x51, 0x46, 0xff, 0xf7, + 0x11, 0xff, 0x00, 0x28, 0xa1, 0x46, 0x05, 0xdb, 0x52, 0x46, 0x30, 0x46, + 0x04, 0xa9, 0xff, 0xf7, 0x13, 0xff, 0xa1, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x41, 0xff, 0xdc, 0xe7, 0x55, 0x1a, 0x0c, 0x00, 0xa0, 0x86, 0x01, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, + 0x66, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x34, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x4b, 0x59, 0xf8, 0x03, 0x40, + 0x02, 0x4b, 0x23, 0x60, 0xff, 0xf7, 0xd4, 0xfe, 0x20, 0x71, 0x38, 0xbd, + 0x55, 0x1a, 0x0c, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x79, 0x65, 0x73, 0x00, + 0x4e, 0x4f, 0x00, 0x50, 0x41, 0x53, 0x53, 0x00, 0x46, 0x41, 0x49, 0x4c, + 0x00, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6f, + 0x77, 0x6e, 0x20, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x3a, + 0x20, 0x25, 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, + 0x20, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x72, 0x61, 0x6e, 0x3a, 0x20, 0x25, + 0x73, 0x2c, 0x20, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x5b, 0x75, + 0x73, 0x65, 0x72, 0x20, 0x25, 0x64, 0x5d, 0x20, 0x6c, 0x69, 0x62, 0x72, + 0x61, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x20, 0x3d, 0x20, + 0x25, 0x64, 0x20, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x20, 0x25, 0x64, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x25, 0x73, 0x0a, 0x00, + 0x25, 0x64, 0x00, 0x5b, 0x75, 0x73, 0x65, 0x72, 0x5d, 0x20, 0x63, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x25, 0x73, 0x0a, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, + 0x29, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xec, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x29, 0x06, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xf0, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x04, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x37, 0x00, 0x00, 0x00, 0xf4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x40, 0x00, 0x00, 0x00, + 0x94, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xa0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xa4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xc8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xdc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x7c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x81, 0x04, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x49, 0x5f, 0x63, 0x78, 0x78, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x63, 0x70, + 0x70, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, + 0x5f, 0x5a, 0x4c, 0x36, 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x66, 0x00, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, + 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, + 0x61, 0x64, 0x64, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, + 0x00, 0x75, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, + 0x64, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x00, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, + 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x61, + 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, + 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x6f, 0x70, 0x65, 0x6e, + 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x72, 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x2e, 0x73, 0x79, + 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, + 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, + 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, + 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, + 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, + 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x69, + 0x6e, 0x69, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, + 0x2e, 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x03, 0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x44, 0x06, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, 0xec, 0x06, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x16, 0x00, 0x00, + 0xf0, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf4, 0x16, 0x00, 0x00, 0xf4, 0x06, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x94, 0x17, 0x00, 0x00, 0x94, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, + 0x04, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x08, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x78, 0x08, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb8, 0x0c, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0d, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_cxxuser_len = 4352; diff --git a/testing/fs/xipfs/funcdesc_bin.h b/testing/fs/xipfs/funcdesc_bin.h new file mode 100644 index 00000000000..57ef2b15ea5 --- /dev/null +++ b/testing/fs/xipfs/funcdesc_bin.h @@ -0,0 +1,304 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/funcdesc_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from funcdesc.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_funcdesc[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x91, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xdc, 0x09, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x11, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, + 0xfc, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, + 0xfc, 0x14, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfc, 0x04, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x91, 0x02, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, + 0x6e, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, + 0x69, 0x00, 0x6d, 0x65, 0x6d, 0x63, 0x70, 0x79, 0x00, 0x73, 0x74, 0x72, + 0x63, 0x6d, 0x70, 0x00, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x00, 0x5f, 0x5f, + 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, 0xa0, 0x15, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x90, 0x15, 0x00, 0x00, 0xa4, 0x0c, 0x00, 0x00, 0x98, 0x15, 0x00, 0x00, + 0xa4, 0x02, 0x00, 0x00, 0xa8, 0x15, 0x00, 0x00, 0xa3, 0x0e, 0x00, 0x00, + 0xac, 0x15, 0x00, 0x00, 0xa3, 0x08, 0x00, 0x00, 0xb0, 0x15, 0x00, 0x00, + 0xa3, 0x0d, 0x00, 0x00, 0xb4, 0x15, 0x00, 0x00, 0xa3, 0x07, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4d, + 0x4f, 0x4b, 0x8e, 0xb0, 0x59, 0xf8, 0x03, 0x60, 0x04, 0xac, 0x0f, 0x46, + 0x01, 0x28, 0x0f, 0xce, 0x0f, 0xc4, 0x33, 0x68, 0x4d, 0x46, 0x23, 0x60, + 0x4a, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x1b, 0x68, 0x79, 0xdd, 0x78, 0x68, + 0xd3, 0xf8, 0x04, 0x90, 0x1a, 0x68, 0x90, 0x47, 0x02, 0x28, 0xa9, 0x46, + 0x07, 0x46, 0x73, 0xdc, 0x00, 0x28, 0x73, 0xdc, 0x43, 0x49, 0x3a, 0x46, + 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0xd2, 0xff, 0x01, 0x24, 0xa9, 0x46, + 0x3e, 0x4b, 0x04, 0xa9, 0x59, 0xf8, 0x03, 0x30, 0x14, 0x22, 0x5b, 0x68, + 0x09, 0xa8, 0xd3, 0xf8, 0x04, 0x90, 0xd3, 0xf8, 0x00, 0x80, 0xc0, 0x47, + 0x00, 0x23, 0xa9, 0x46, 0x0d, 0xf1, 0x24, 0x08, 0x04, 0xa9, 0x09, 0xae, + 0x30, 0x68, 0x0a, 0x68, 0x90, 0x42, 0x57, 0xd0, 0x35, 0x49, 0x06, 0x20, + 0x79, 0x44, 0xff, 0xf7, 0xb5, 0xff, 0xa9, 0x46, 0x01, 0x34, 0x30, 0x4b, + 0x32, 0x49, 0x59, 0xf8, 0x03, 0xb0, 0x79, 0x44, 0xdb, 0xf8, 0x04, 0xc0, + 0x01, 0x91, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0x30, 0x07, 0x22, + 0x02, 0xa8, 0x98, 0x47, 0xa9, 0x46, 0xdb, 0xf8, 0x08, 0x30, 0x01, 0x99, + 0xd3, 0xf8, 0x04, 0x90, 0x1a, 0x68, 0x02, 0xa8, 0x90, 0x47, 0xa9, 0x46, + 0x30, 0xb1, 0x27, 0x49, 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0x94, 0xff, + 0xa9, 0x46, 0x01, 0x34, 0x1f, 0x4b, 0x04, 0x22, 0x59, 0xf8, 0x03, 0x30, + 0x05, 0x21, 0xde, 0x68, 0x21, 0x4b, 0xd6, 0xf8, 0x00, 0xa0, 0x4b, 0x44, + 0x09, 0xa8, 0xd6, 0xf8, 0x04, 0x90, 0xd0, 0x47, 0x00, 0x23, 0xa9, 0x46, + 0xd8, 0xf8, 0x00, 0x20, 0x01, 0x33, 0x9a, 0x42, 0x22, 0xd0, 0x1b, 0x49, + 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0x78, 0xff, 0xa9, 0x46, 0x01, 0x34, + 0x18, 0x49, 0x23, 0x46, 0x3a, 0x46, 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, + 0x6f, 0xff, 0x20, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0x0e, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8d, 0x13, 0x48, 0x78, 0x44, 0x83, 0xe7, 0x07, 0x28, 0x8b, 0xd1, + 0x00, 0x24, 0x91, 0xe7, 0x01, 0x33, 0x05, 0x2b, 0x06, 0xf1, 0x04, 0x06, + 0x01, 0xf1, 0x04, 0x01, 0x9c, 0xd1, 0xa6, 0xe7, 0x05, 0x2b, 0x08, 0xf1, + 0x04, 0x08, 0xd3, 0xd1, 0xde, 0xe7, 0x00, 0xbf, 0x1c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x68, 0x0b, 0x68, 0xc0, 0x1a, 0x70, 0x47, 0x37, 0x00, 0x5b, 0x66, + 0x75, 0x6e, 0x63, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x20, 0x46, 0x41, 0x49, + 0x4c, 0x20, 0x61, 0x74, 0x6f, 0x69, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, + 0x67, 0x68, 0x20, 0x61, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x5b, 0x66, 0x75, + 0x6e, 0x63, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x20, 0x46, 0x41, 0x49, 0x4c, + 0x20, 0x6d, 0x65, 0x6d, 0x63, 0x70, 0x79, 0x20, 0x74, 0x68, 0x72, 0x6f, + 0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x0a, 0x00, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, + 0x00, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x20, + 0x46, 0x41, 0x49, 0x4c, 0x20, 0x73, 0x74, 0x72, 0x63, 0x6d, 0x70, 0x20, + 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x0a, 0x00, 0x5b, 0x66, + 0x75, 0x6e, 0x63, 0x64, 0x65, 0x73, 0x63, 0x5d, 0x20, 0x46, 0x41, 0x49, + 0x4c, 0x20, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6f, + 0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x0a, 0x00, 0x5b, 0x66, 0x75, 0x6e, 0x63, 0x64, + 0x65, 0x73, 0x63, 0x5d, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x25, 0x64, + 0x2c, 0x20, 0x25, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x73, 0x0a, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x84, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xe4, 0x04, 0x00, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0d, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x0c, 0x00, 0x00, 0x00, + 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xd4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xe4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe4, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, + 0x24, 0x00, 0x00, 0x00, 0xa8, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xa8, 0x15, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x35, 0x00, 0x00, 0x00, + 0xac, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0xb0, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x0b, 0x00, 0x47, 0x00, 0x00, 0x00, 0xb4, 0x15, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x4f, 0x00, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x58, 0x00, 0x00, 0x00, 0x84, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x8c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x91, 0x02, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x83, 0x00, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x66, 0x75, 0x6e, 0x63, 0x64, 0x65, 0x73, + 0x63, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x63, 0x6d, 0x70, 0x5f, 0x69, + 0x6e, 0x74, 0x00, 0x24, 0x64, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, + 0x4f, 0x52, 0x30, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, + 0x31, 0x00, 0x67, 0x5f, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x67, 0x5f, 0x6d, + 0x65, 0x6d, 0x63, 0x70, 0x79, 0x00, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x63, + 0x6d, 0x70, 0x00, 0x67, 0x5f, 0x71, 0x73, 0x6f, 0x72, 0x74, 0x00, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, + 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, + 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x61, + 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, + 0x6f, 0x67, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, + 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, + 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, + 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, + 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, + 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, + 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x3c, 0x02, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7c, 0x02, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf8, 0x04, 0x00, 0x00, 0xf8, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xfc, 0x14, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x84, 0x15, 0x00, 0x00, + 0x84, 0x05, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xa8, 0x15, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfd, 0x05, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x06, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x08, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x57, 0x09, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_funcdesc_len = 3204; diff --git a/testing/fs/xipfs/lazymod_bin.h b/testing/fs/xipfs/lazymod_bin.h new file mode 100644 index 00000000000..f45037a5023 --- /dev/null +++ b/testing/fs/xipfs/lazymod_bin.h @@ -0,0 +1,220 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/lazymod_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from lazymod.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_lazymod[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd5, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x10, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x3c, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x3c, 0x12, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x3c, 0x02, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd5, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, + 0x6e, 0x00, 0x61, 0x74, 0x6f, 0x69, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, + 0x67, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x00, + 0xc0, 0x12, 0x00, 0x00, 0xa4, 0x04, 0x00, 0x00, 0xc8, 0x12, 0x00, 0x00, + 0xa4, 0x05, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5f, 0xf8, 0x08, 0xc0, 0x4d, 0xf8, 0x04, 0xcd, + 0xd9, 0xf8, 0x04, 0xc0, 0xd9, 0xf8, 0x00, 0xf0, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5f, 0xf8, 0x08, 0xc0, + 0x4d, 0xf8, 0x04, 0xcd, 0xd9, 0xf8, 0x04, 0xc0, 0xd9, 0xf8, 0x00, 0xf0, + 0x01, 0x28, 0x10, 0xb5, 0x4c, 0x46, 0x0b, 0xdd, 0x48, 0x68, 0xff, 0xf7, + 0xe5, 0xff, 0xa1, 0x46, 0x02, 0x46, 0x04, 0x49, 0x06, 0x20, 0x79, 0x44, + 0xff, 0xf7, 0xca, 0xff, 0x00, 0x20, 0x10, 0xbd, 0x01, 0x22, 0xf6, 0xe7, + 0x0e, 0x00, 0x00, 0x00, 0x5b, 0x6c, 0x61, 0x7a, 0x79, 0x6d, 0x6f, 0x64, + 0x5d, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x20, 0x61, 0x20, 0x44, 0x54, 0x5f, 0x4a, 0x4d, + 0x50, 0x52, 0x45, 0x4c, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x6f, 0x72, 0x2c, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x25, 0x64, + 0x0a, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xc4, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x0b, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x11, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x1a, 0x00, 0x00, 0x00, + 0xb4, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xac, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xd5, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x6c, 0x61, 0x7a, 0x79, 0x6d, 0x6f, 0x64, 0x2e, 0x63, 0x00, 0x24, + 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, + 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, 0x46, + 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x00, + 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, + 0x44, 0x5f, 0x5f, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, + 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x5f, 0x00, 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x61, 0x74, 0x6f, + 0x69, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, + 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, + 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, + 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x70, 0x6c, 0x74, 0x00, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, + 0x61, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, + 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, + 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, + 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x74, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x01, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, 0xd4, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, 0x00, + 0xfc, 0x01, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x3c, 0x12, 0x00, 0x00, 0x3c, 0x02, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xb4, 0x12, 0x00, 0x00, + 0xb4, 0x02, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x03, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x05, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_lazymod_len = 2192; diff --git a/testing/fs/xipfs/libcounter_bin.h b/testing/fs/xipfs/libcounter_bin.h new file mode 100644 index 00000000000..de4db93eb69 --- /dev/null +++ b/testing/fs/xipfs/libcounter_bin.h @@ -0,0 +1,208 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/libcounter_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from libcounter.so -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_libcounter[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xac, 0x05, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0xf8, 0x11, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xe5, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, 0x70, 0x00, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, + 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, + 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, + 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6c, 0x69, 0x62, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x73, 0x6f, 0x00, 0x00, + 0x8c, 0x12, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x4b, 0x59, 0xf8, + 0x03, 0x30, 0x1a, 0x68, 0x10, 0x44, 0x18, 0x60, 0x70, 0x47, 0x00, 0xbf, + 0x0c, 0x00, 0x00, 0x00, 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x18, 0x68, + 0x70, 0x47, 0x00, 0xbf, 0x0c, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, + 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, + 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, + 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, + 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, + 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, + 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, + 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, + 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, + 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x0e, 0x00, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x14, 0x00, 0x00, 0x00, 0x90, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x90, 0x12, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0xf1, 0xff, 0x26, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, + 0x80, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x00, 0x60, 0x00, 0x00, 0x00, + 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x70, 0x00, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x00, 0x6c, 0x69, 0x62, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, + 0x2e, 0x4c, 0x41, 0x4e, 0x43, 0x48, 0x4f, 0x52, 0x30, 0x00, 0x67, 0x5f, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, + 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x4f, + 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x75, 0x6d, + 0x70, 0x00, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, + 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, + 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, + 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, + 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, + 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, + 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, + 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, + 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, + 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, 0xc8, 0x01, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00, 0x00, + 0xd0, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf4, 0x01, 0x00, 0x00, 0xf4, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x11, 0x00, 0x00, 0xf8, 0x01, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x90, 0x12, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd5, 0x02, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0xb0, 0x01, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x04, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x35, 0x05, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_libcounter_len = 2052; diff --git a/testing/fs/xipfs/libshape_bin.h b/testing/fs/xipfs/libshape_bin.h new file mode 100644 index 00000000000..1c945fd9a84 --- /dev/null +++ b/testing/fs/xipfs/libshape_bin.h @@ -0,0 +1,389 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/libshape_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from libshape.so -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_libshape[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x88, 0x0d, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x13, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0xbc, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0xbc, 0x15, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc4, 0x05, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0d, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x6d, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x99, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x79, 0x00, 0x00, 0x00, 0xa9, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x85, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x44, 0x32, 0x45, 0x76, 0x00, 0x73, 0x79, + 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, 0x6e, 0x74, + 0x66, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x63, + 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x44, 0x31, 0x45, 0x76, 0x00, 0x73, 0x68, + 0x61, 0x70, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x00, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x00, 0x73, 0x74, 0x72, + 0x6c, 0x63, 0x70, 0x79, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x00, 0x5f, + 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6c, 0x69, 0x62, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x2e, 0x73, 0x6f, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xc0, 0x16, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x80, 0x16, 0x00, 0x00, + 0xa4, 0x07, 0x00, 0x00, 0x88, 0x16, 0x00, 0x00, 0xa4, 0x09, 0x00, 0x00, + 0x90, 0x16, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, 0x98, 0x16, 0x00, 0x00, + 0xa4, 0x0e, 0x00, 0x00, 0xa0, 0x16, 0x00, 0x00, 0xa4, 0x0f, 0x00, 0x00, + 0xa8, 0x16, 0x00, 0x00, 0xa4, 0x12, 0x00, 0x00, 0xb0, 0x16, 0x00, 0x00, + 0xa4, 0x13, 0x00, 0x00, 0xb8, 0x16, 0x00, 0x00, 0xa4, 0x15, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0x10, 0xb5, 0x03, 0x4b, 0x59, 0xf8, 0x03, 0x00, + 0xff, 0xf7, 0xaa, 0xff, 0x10, 0xbd, 0x00, 0xbf, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x22, 0x07, 0x4b, 0x05, 0x49, 0x59, 0xf8, 0x03, 0x30, 0x06, 0x20, + 0xc3, 0xe9, 0x00, 0x12, 0x04, 0x49, 0x9a, 0x60, 0x79, 0x44, 0x1a, 0x73, + 0xff, 0xf7, 0xca, 0xbf, 0xe0, 0xa9, 0x5b, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x04, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x9a, 0x68, + 0x01, 0x32, 0x9a, 0x60, 0x5a, 0x68, 0x10, 0x44, 0x58, 0x60, 0x70, 0x47, + 0x4c, 0x00, 0x00, 0x00, 0x03, 0x4b, 0x01, 0x46, 0x59, 0xf8, 0x03, 0x00, + 0x40, 0x22, 0x0c, 0x30, 0xff, 0xf7, 0xa6, 0xbf, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x58, 0x68, 0x70, 0x47, 0x00, 0xbf, + 0x4c, 0x00, 0x00, 0x00, 0x05, 0x4b, 0x59, 0xf8, 0x03, 0x30, 0x18, 0x68, + 0x02, 0x4b, 0xc3, 0x1a, 0x58, 0x42, 0x58, 0x41, 0x70, 0x47, 0x00, 0xbf, + 0xe0, 0xa9, 0x5b, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x45, + 0x1d, 0x49, 0x05, 0x46, 0x82, 0x68, 0x85, 0xb0, 0x06, 0x20, 0x79, 0x44, + 0x4c, 0x46, 0xff, 0xf7, 0x8d, 0xff, 0x2b, 0x7b, 0xa1, 0x46, 0x1b, 0xb3, + 0x18, 0x4a, 0x10, 0x21, 0x6b, 0x68, 0x7a, 0x44, 0x68, 0x46, 0xff, 0xf7, + 0x5b, 0xff, 0x05, 0xf1, 0x0c, 0x07, 0xa1, 0x46, 0x82, 0x46, 0x4f, 0xf4, + 0xd2, 0x72, 0x40, 0xf2, 0x41, 0x21, 0x38, 0x46, 0xff, 0xf7, 0x82, 0xff, + 0x06, 0x1e, 0xa1, 0x46, 0x12, 0xdb, 0x51, 0x46, 0xff, 0xf7, 0x54, 0xff, + 0x00, 0x28, 0xa1, 0x46, 0x05, 0xdb, 0x52, 0x46, 0x69, 0x46, 0x30, 0x46, + 0xff, 0xf7, 0x56, 0xff, 0xa1, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x7a, 0xff, + 0x28, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x85, 0x05, 0x49, 0x3a, 0x46, + 0x06, 0x20, 0x79, 0x44, 0xff, 0xf7, 0x5c, 0xff, 0xf4, 0xe7, 0x00, 0xbf, + 0x76, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x20, 0x20, 0x5b, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, + 0x20, 0x7e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x28, 0x29, + 0x20, 0x72, 0x61, 0x6e, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x25, + 0x64, 0x20, 0x61, 0x64, 0x64, 0x73, 0x0a, 0x00, 0x25, 0x64, 0x00, 0x20, + 0x20, 0x5b, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, 0x20, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x20, 0x25, 0x73, 0x20, 0x66, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x0a, 0x00, 0x20, 0x20, 0x5b, 0x6c, 0x69, 0x62, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5d, 0x20, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x79, 0x28, 0x29, 0x20, 0x72, 0x61, 0x6e, 0x0a, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xbc, 0x15, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x74, 0x16, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x6f, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, + 0x6d, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, + 0x31, 0x20, 0x28, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, + 0x2d, 0x31, 0x35, 0x2e, 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, + 0x32, 0x2e, 0x31, 0x20, 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, + 0x00, 0x41, 0x2c, 0x00, 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, + 0x01, 0x22, 0x00, 0x00, 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, + 0x07, 0x4d, 0x09, 0x02, 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, + 0x18, 0x01, 0x19, 0x01, 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0f, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x01, 0x00, 0x00, 0x00, + 0xc4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x94, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x98, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xa4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa8, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xbc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc0, 0x15, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x00, 0x49, 0x00, 0x00, 0x00, 0xc4, 0x16, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x59, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xf1, 0xff, 0x62, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x4c, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xb4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xc8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0xdc, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x6d, 0x04, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xc5, 0x04, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x06, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x99, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xa9, 0x04, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xbc, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x85, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x24, 0x64, 0x00, 0x5f, + 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, 0x73, 0x75, 0x62, 0x5f, + 0x49, 0x5f, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x63, + 0x70, 0x70, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x5f, + 0x73, 0x75, 0x62, 0x5f, 0x44, 0x5f, 0x6c, 0x69, 0x62, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x2e, 0x63, 0x70, 0x70, 0x00, 0x2e, 0x4c, 0x41, 0x4e, 0x43, + 0x48, 0x4f, 0x52, 0x30, 0x00, 0x5f, 0x5a, 0x4c, 0x31, 0x30, 0x67, 0x5f, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x00, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, + 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x44, 0x31, 0x45, 0x76, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x00, 0x73, 0x6e, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x66, 0x00, 0x5f, 0x5a, 0x4e, 0x38, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x72, 0x79, 0x44, 0x32, 0x45, 0x76, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x00, 0x73, 0x68, 0x61, + 0x70, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x65, 0x64, 0x00, 0x66, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, + 0x00, 0x77, 0x72, 0x69, 0x74, 0x65, 0x00, 0x73, 0x74, 0x72, 0x6c, 0x63, + 0x70, 0x79, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, + 0x73, 0x79, 0x73, 0x6c, 0x6f, 0x67, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x00, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, + 0x00, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x2e, 0x73, 0x79, 0x6d, + 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x68, + 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, 0x6d, 0x00, + 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, 0x65, 0x6c, + 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, 0x2e, 0x74, + 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x00, + 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, 0x75, 0x70, 0x00, 0x2e, 0x69, 0x6e, + 0x69, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x66, 0x69, + 0x6e, 0x69, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x2e, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, + 0x62, 0x73, 0x73, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, + 0x80, 0x02, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x03, 0x00, 0x00, 0x38, 0x03, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, 0x90, 0x03, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, + 0x30, 0x04, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x4c, 0x05, 0x00, 0x00, 0x4c, 0x05, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, 0xb8, 0x05, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, + 0xbc, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xc0, 0x15, 0x00, 0x00, 0xc0, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xc4, 0x15, 0x00, 0x00, 0xc4, 0x05, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x74, 0x16, 0x00, 0x00, + 0x74, 0x06, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xc4, 0x16, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x06, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x07, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x00, 0x00, 0x90, 0x04, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x0b, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xeb, 0x0c, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_libshape_len = 4224; diff --git a/testing/fs/xipfs/manyneeded_bin.h b/testing/fs/xipfs/manyneeded_bin.h new file mode 100644 index 00000000000..c899dc66273 --- /dev/null +++ b/testing/fs/xipfs/manyneeded_bin.h @@ -0,0 +1,302 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/manyneeded_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from manyneeded.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_manyneeded[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xfd, 0x03, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, + 0x4c, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, 0x4c, 0x14, 0x00, 0x00, + 0x4c, 0x14, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4c, 0x04, 0x00, 0x00, 0x4c, 0x14, 0x00, 0x00, 0x4c, 0x14, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x06, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x30, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x31, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x32, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x33, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x34, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x35, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x36, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x37, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, 0x6c, + 0x65, 0x61, 0x66, 0x5f, 0x38, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x30, 0x2e, + 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x31, 0x2e, 0x73, 0x6f, 0x00, + 0x6e, 0x65, 0x65, 0x64, 0x32, 0x2e, 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x33, 0x2e, 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x34, 0x2e, + 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x35, 0x2e, 0x73, 0x6f, 0x00, + 0x6e, 0x65, 0x65, 0x64, 0x36, 0x2e, 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x37, 0x2e, 0x73, 0x6f, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x38, 0x2e, + 0x73, 0x6f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, + 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, + 0x28, 0x15, 0x00, 0x00, 0xa4, 0x05, 0x00, 0x00, 0x30, 0x15, 0x00, 0x00, + 0xa4, 0x06, 0x00, 0x00, 0x38, 0x15, 0x00, 0x00, 0xa4, 0x07, 0x00, 0x00, + 0x40, 0x15, 0x00, 0x00, 0xa4, 0x08, 0x00, 0x00, 0x48, 0x15, 0x00, 0x00, + 0xa4, 0x0a, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0xa4, 0x0d, 0x00, 0x00, + 0x58, 0x15, 0x00, 0x00, 0xa4, 0x0e, 0x00, 0x00, 0x60, 0x15, 0x00, 0x00, + 0xa4, 0x0f, 0x00, 0x00, 0x68, 0x15, 0x00, 0x00, 0xa4, 0x10, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x14, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x1c, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x24, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x2c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x34, 0x00, 0x00, 0x00, + 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, + 0xdc, 0xf8, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x44, 0x00, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, 0x0c, 0xeb, 0x09, 0x0c, + 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0xb5, 0x4d, 0x46, 0xff, 0xf7, 0xac, 0xff, 0xa9, 0x46, 0x04, 0x46, + 0xff, 0xf7, 0xee, 0xff, 0xa9, 0x46, 0x04, 0x44, 0xff, 0xf7, 0xb8, 0xff, + 0xa9, 0x46, 0x04, 0x44, 0xff, 0xf7, 0xdc, 0xff, 0xa9, 0x46, 0x04, 0x44, + 0xff, 0xf7, 0xce, 0xff, 0xa9, 0x46, 0x04, 0x44, 0xff, 0xf7, 0xa2, 0xff, + 0xa9, 0x46, 0x04, 0x44, 0xff, 0xf7, 0xb2, 0xff, 0xa9, 0x46, 0x04, 0x44, + 0xff, 0xf7, 0x86, 0xff, 0xa9, 0x46, 0x04, 0x44, 0xff, 0xf7, 0xb4, 0xff, + 0x20, 0x44, 0x38, 0xbd, 0x1c, 0x15, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x1c, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4c, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x14, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0e, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x11, 0x00, 0x00, 0x00, + 0x4c, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, + 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x58, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x5c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x6c, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x70, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x84, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x94, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x98, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0xa8, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xac, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0xd0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xd4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe4, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x4c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x6e, 0x79, 0x6e, 0x65, 0x65, + 0x64, 0x65, 0x64, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, + 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x00, 0x24, 0x64, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x37, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x30, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x35, 0x00, 0x6e, 0x65, 0x65, 0x64, 0x5f, + 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x32, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6e, + 0x65, 0x65, 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x36, 0x00, 0x6d, + 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x38, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x34, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x33, 0x00, 0x6e, 0x65, 0x65, + 0x64, 0x5f, 0x6c, 0x65, 0x61, 0x66, 0x5f, 0x31, 0x00, 0x00, 0x2e, 0x73, + 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, 0x61, + 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, 0x00, + 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x79, + 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, 0x72, + 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, 0x00, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, 0x78, + 0x75, 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x00, + 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, + 0x1c, 0x02, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, 0x48, 0x03, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, + 0xfc, 0x03, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x04, 0x00, 0x00, 0x48, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x4c, 0x14, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, 0x15, 0x00, 0x00, + 0x1c, 0x05, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x05, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x05, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x05, 0x00, 0x00, 0xf0, 0x02, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd4, 0x08, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x09, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_manyneeded_len = 3176; diff --git a/testing/fs/xipfs/missingsym_bin.h b/testing/fs/xipfs/missingsym_bin.h new file mode 100644 index 00000000000..5971ffe99cf --- /dev/null +++ b/testing/fs/xipfs/missingsym_bin.h @@ -0,0 +1,200 @@ +/**************************************************************************** + * apps/testing/fs/xipfs/missingsym_bin.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* Generated from missingsym.fdpic -- do not edit. + * + * An FDPIC module, embedded so the demo has something to load without + * needing a filesystem populated from the host first. + */ + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +static const unsigned char g_missingsym[] = +{ + 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x28, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd9, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x48, 0x05, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x05, 0x34, 0x00, 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, + 0x0f, 0x00, 0x0e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, + 0xe0, 0x11, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x51, 0xe5, 0x74, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x09, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xd9, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, + 0x6e, 0x00, 0x5f, 0x5f, 0x78, 0x69, 0x70, 0x66, 0x73, 0x5f, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, 0x50, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x52, 0x4f, + 0x46, 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, + 0x74, 0x12, 0x00, 0x00, 0xa4, 0x08, 0x00, 0x00, 0xdf, 0xf8, 0x0c, 0xc0, + 0x0c, 0xeb, 0x09, 0x0c, 0xdc, 0xf8, 0x04, 0x90, 0xdc, 0xf8, 0x00, 0xf0, + 0x0c, 0x00, 0x00, 0x00, 0xff, 0xf7, 0xf4, 0xbf, 0x68, 0x12, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x6f, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x43, 0x43, 0x3a, 0x20, 0x28, 0x41, 0x72, 0x6d, 0x20, 0x47, 0x4e, + 0x55, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x20, + 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x31, 0x20, 0x28, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x20, 0x61, 0x72, 0x6d, 0x2d, 0x31, 0x35, 0x2e, + 0x38, 0x36, 0x29, 0x29, 0x20, 0x31, 0x35, 0x2e, 0x32, 0x2e, 0x31, 0x20, + 0x32, 0x30, 0x32, 0x35, 0x31, 0x32, 0x30, 0x33, 0x00, 0x41, 0x2c, 0x00, + 0x00, 0x00, 0x61, 0x65, 0x61, 0x62, 0x69, 0x00, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x05, 0x37, 0x2d, 0x4d, 0x00, 0x06, 0x0a, 0x07, 0x4d, 0x09, 0x02, + 0x12, 0x04, 0x14, 0x01, 0x15, 0x01, 0x17, 0x03, 0x18, 0x01, 0x19, 0x01, + 0x1a, 0x01, 0x1e, 0x04, 0x22, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x68, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, + 0x0e, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf1, 0xff, 0x11, 0x00, 0x00, 0x00, + 0xe0, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xff, + 0x1a, 0x00, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x09, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x07, 0x00, 0x43, 0x00, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x73, 0x79, 0x6d, 0x2e, 0x63, 0x00, 0x24, 0x74, 0x00, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x00, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, + 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x00, 0x24, 0x64, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, + 0x49, 0x58, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x5f, 0x00, 0x6d, + 0x61, 0x69, 0x6e, 0x00, 0x5f, 0x5f, 0x52, 0x4f, 0x46, 0x49, 0x58, 0x55, + 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x78, + 0x69, 0x70, 0x66, 0x73, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x6f, + 0x6e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x00, 0x00, 0x2e, + 0x73, 0x79, 0x6d, 0x74, 0x61, 0x62, 0x00, 0x2e, 0x73, 0x74, 0x72, 0x74, + 0x61, 0x62, 0x00, 0x2e, 0x73, 0x68, 0x73, 0x74, 0x72, 0x74, 0x61, 0x62, + 0x00, 0x2e, 0x68, 0x61, 0x73, 0x68, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, + 0x79, 0x6d, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x73, 0x74, 0x72, 0x00, 0x2e, + 0x72, 0x65, 0x6c, 0x2e, 0x64, 0x79, 0x6e, 0x00, 0x2e, 0x70, 0x6c, 0x74, + 0x00, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x2e, 0x72, 0x6f, 0x66, 0x69, + 0x78, 0x75, 0x70, 0x00, 0x2e, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, + 0x00, 0x2e, 0x67, 0x6f, 0x74, 0x00, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x00, 0x2e, 0x41, 0x52, 0x4d, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xbc, 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x00, 0x00, + 0xd8, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xdc, 0x01, 0x00, 0x00, 0xdc, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xe0, 0x11, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, + 0x68, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0x02, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x02, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x60, 0x04, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x04, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned int g_missingsym_len = 1952; diff --git a/testing/fs/xipfs/xipfs_main.c b/testing/fs/xipfs/xipfs_main.c index 6f2ad2612a0..8bc3f4047e5 100644 --- a/testing/fs/xipfs/xipfs_main.c +++ b/testing/fs/xipfs/xipfs_main.c @@ -46,6 +46,21 @@ #include #include +#ifdef CONFIG_FDPIC +# include +# include + +# include "libshape_bin.h" +# include "cxxuser_bin.h" +# include "funcdesc_bin.h" +# include "lazymod_bin.h" +# include "libcounter_bin.h" +# include "counteruser_bin.h" +# include "callback_bin.h" +# include "missingsym_bin.h" +# include "manyneeded_bin.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -1948,6 +1963,701 @@ static void test_powerloss_dirs(void) unlink(PATH("d_file.bin")); } +#ifdef CONFIG_FDPIC + +/**************************************************************************** + * Test: FDPIC modules loaded out of the filesystem + * + * These are here rather than in the demo because the properties they check + * are the ones that fail *quietly*. A loader that skips DT_INIT_ARRAY runs + * a C++ module perfectly happily with every global left as zero; one that + * skips DT_JMPREL loads a module that hard-faults only once it calls out; + * one that mis-sizes the descriptor pool corrupts the heap. None of those + * announce themselves, so they need something that asserts. + * + * The module exit status is the channel: each module checks its own + * invariants, and the C++ one returns a bitmask so that all four of its + * properties are evaluated on every run instead of the first failure hiding + * the rest. + ****************************************************************************/ + +/* Kept in step with ../../../examples/fdpicxip/modules/cxxuser.cpp */ + +#define USER_FAIL_OWN_CTOR 0x01 +#define USER_FAIL_LIB_CTOR 0x02 +#define USER_FAIL_ORDER 0x04 +#define USER_FAIL_PRIVATE 0x08 + +/* Kept in step with ../../../examples/fdpicxip/modules/callback.c */ + +#define CB_FAIL_QSORT 0x01 +#define CB_FAIL_PTHREAD 0x02 +#define CB_FAIL_SIGNAL 0x04 +#define CB_FAIL_TASK 0x08 +#define CB_FAIL_ONCE 0x10 +#define CB_FAIL_SPAWN 0x20 +#define CB_FAIL_SCANDIR 0x40 +#define CB_FAIL_SIGACTION 0x80 + +/* The mq checks run as a second invocation ("callback mq") and report in + * their own byte, because waitpid only preserves the low eight bits of an + * exit status and the checks above already fill them. + */ + +#define CB_FAIL_MQ_THREAD 0x01 +#define CB_FAIL_MQ_SIGNAL 0x02 +#define CB_FAIL_TIMER_THREAD 0x04 + +static int stage_blob(FAR const char *path, FAR const unsigned char *data, + unsigned int len) +{ + ssize_t nwritten; + int fd; + + unlink(path); + + fd = open(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0644); + if (fd < 0) + { + return -errno; + } + + /* Declare the size up front so the extent is reserved exactly */ + + if (ftruncate(fd, len) < 0) + { + close(fd); + return -errno; + } + + nwritten = write(fd, data, len); + close(fd); + + return (nwritten == (ssize_t)len) ? 0 : -EIO; +} + +/**************************************************************************** + * Name: run_module + * + * Description: + * Spawn a module and return its exit status, or a negative errno if it + * never got as far as exiting. + * + * Note that binfmt reports a loader failure as -ENOENT, because at the + * dispatch layer "the loader refused it" and "not my format" are the same + * answer. A spawn failure here therefore says nothing about *why*; the + * reason only reaches the syslog. + * + ****************************************************************************/ + +static int run_module(FAR const char *path, FAR char *const argv[]) +{ + int status; + pid_t pid; + int ret; + + ret = posix_spawn(&pid, path, NULL, NULL, argv, NULL); + if (ret != 0) + { + return -ret; + } + + if (waitpid(pid, &status, 0) < 0) + { + return -errno; + } + + if (!WIFEXITED(status)) + { + return -ECHILD; + } + + return WEXITSTATUS(status); +} + +/**************************************************************************** + * Name: read_marker + * + * Description: + * Read back the integer a module's destructor left behind, or -1. + * + ****************************************************************************/ + +static int read_marker(FAR const char *path) +{ + char buf[16]; + ssize_t nread; + int fd; + + fd = open(path, O_RDONLY | O_CLOEXEC); + if (fd < 0) + { + return -1; + } + + nread = read(fd, buf, sizeof(buf) - 1); + close(fd); + + if (nread <= 0) + { + return -1; + } + + buf[nread] = '\0'; + return atoi(buf); +} + +static void test_fdpic(void) +{ + struct xipfs_extent_info_s info; + FAR unsigned char *corrupt; + char marker[2][64]; + char result[2][64]; + char seed[2][8]; + FAR char *args[5]; + pid_t pid[2]; + int fails; + bool ok; + int ret; + int i; + + printf("\n-- FDPIC modules --\n"); + + /* A module whose imported function pointers are R_ARM_FUNCDESC: the + * loader has to manufacture a descriptor for each out of the pool behind + * the writable segment. Nothing else in the tree emits one. It calls + * through every one of them, because a descriptor with the wrong entry or + * the wrong GOT half is invisible until it is branched through. + */ + + ret = stage_blob(PATH("funcdesc"), g_funcdesc, g_funcdesc_len); + CHECK("stage the FUNCDESC module", ret == 0, strerror(-ret)); + + args[0] = (FAR char *)"funcdesc"; + args[1] = (FAR char *)"7"; + args[2] = NULL; + + ret = run_module(PATH("funcdesc"), args); + CHECK("descriptors manufactured by the loader are callable", + ret == 0, ret < 0 ? strerror(-ret) : "module reported failure"); + + unlink(PATH("funcdesc")); + + /* A module linked without -z now, so every import is in DT_JMPREL and + * there is no DT_REL at all. Before the loader walked that table this + * loaded cleanly and then hard-faulted on its first call out. + */ + + ret = stage_blob(PATH("lazymod"), g_lazymod, g_lazymod_len); + CHECK("stage the DT_JMPREL module", ret == 0, strerror(-ret)); + + args[0] = (FAR char *)"lazymod"; + args[1] = (FAR char *)"42"; + args[2] = NULL; + + ret = run_module(PATH("lazymod"), args); + CHECK("a module bound entirely through DT_JMPREL runs", + ret == 0, ret < 0 ? strerror(-ret) : "module reported failure"); + + unlink(PATH("lazymod")); + + /* Function pointers handed the other way: from the module into firmware + * that will branch to them later. + * + * In FDPIC such a pointer is the address of a descriptor sitting in the + * module's writable segment, so firmware that treats it as a code address + * jumps into RAM data. Only entry points that resolve the descriptor can + * accept one. qsort and bsearch always did; pthread_create, signal and + * task_create looked usable and took the board down instead. + * + * The module reports a bitmask, so all four are evaluated per run. + */ + + ret = stage_blob(PATH("callback"), g_callback, g_callback_len); + CHECK("stage the callback module", ret == 0, strerror(-ret)); + + args[0] = (FAR char *)"callback"; + args[1] = NULL; + + fails = run_module(PATH("callback"), args); + + CHECK("the callback module runs at all", fails >= 0, + fails < 0 ? strerror(-fails) : ""); + + if (fails < 0) + { + fails = CB_FAIL_QSORT | CB_FAIL_PTHREAD | CB_FAIL_SIGNAL | + CB_FAIL_TASK | CB_FAIL_ONCE | CB_FAIL_SPAWN | + CB_FAIL_SCANDIR | CB_FAIL_SIGACTION; + } + + CHECK("qsort() calls back into a module comparison function", + (fails & CB_FAIL_QSORT) == 0, "callback did not run"); + CHECK("pthread_create() accepts a module start routine", + (fails & CB_FAIL_PTHREAD) == 0, "thread did not reach module code"); + CHECK("signal() accepts a module handler", + (fails & CB_FAIL_SIGNAL) == 0, "handler did not run"); + CHECK("task_create() accepts a module entry point", + (fails & CB_FAIL_TASK) == 0, "task did not reach module code"); + CHECK("sigaction() accepts a module handler", + (fails & CB_FAIL_SIGACTION) == 0, "handler did not run"); + CHECK("pthread_once() accepts a module init routine", + (fails & CB_FAIL_ONCE) == 0, "init routine did not run"); + CHECK("task_spawn() accepts a module entry point", + (fails & CB_FAIL_SPAWN) == 0, "task did not reach module code"); + + /* scandir passes its comparison function on to qsort, which resolves it + * too. Exercising filter and comparison together is what would catch the + * comparison function being resolved twice. + */ + + CHECK("scandir() accepts a module filter and comparison function", + (fails & CB_FAIL_SCANDIR) == 0, "filter did not run"); + + /* mq_notify runs as a second invocation: its two outcomes report in their + * own byte, since the checks above already fill the eight bits waitpid + * preserves. Both SIGEV_THREAD callbacks run on a work-queue worker with + * the module's data base installed around the call, so they reach the + * module's own globals; SIGEV_SIGNAL is caught by a sigaction handler. + */ + + args[1] = (FAR char *)"mq"; + args[2] = NULL; + fails = run_module(PATH("callback"), args); + + if (fails < 0) + { + fails = CB_FAIL_MQ_THREAD | CB_FAIL_MQ_SIGNAL | CB_FAIL_TIMER_THREAD; + } + + CHECK("mq_notify(SIGEV_THREAD) reaches a module callback on the worker", + (fails & CB_FAIL_MQ_THREAD) == 0, "callback did not reach module"); + CHECK("mq_notify(SIGEV_SIGNAL) reaches a module sigaction handler", + (fails & CB_FAIL_MQ_SIGNAL) == 0, "handler did not run"); + CHECK("timer_create(SIGEV_THREAD) reaches a module callback on the worker", + (fails & CB_FAIL_TIMER_THREAD) == 0, "callback did not reach"); + + unlink(PATH("callback")); + + /* A module the loader must refuse. + * + * The OS/ABI byte is the FDPIC marker, and it is the only thing that + * distinguishes a module from any other ELF shared object. Clearing it + * should make the loader decline rather than march on and try to relocate + * something that is not a module -- and a loader that accepts anything is + * a loader whose acceptance means nothing, so this is worth asserting. + * + * Built by corrupting a module that is known to load, so nothing but the + * marker differs. + */ + + corrupt = malloc(g_funcdesc_len); + if (corrupt != NULL) + { + /* xipfs is write-once, so the edit happens on the way in. EI_OSABI + * is byte 7; clearing it to ELFOSABI_NONE leaves a file that is a + * perfectly valid ELF shared object and simply not a module. + */ + + memcpy(corrupt, g_funcdesc, g_funcdesc_len); + corrupt[EI_OSABI] = ELFOSABI_NONE; + + ret = stage_blob(PATH("corrupt"), corrupt, g_funcdesc_len); + free(corrupt); + } + else + { + ret = -ENOMEM; + } + + CHECK("stage a module with the FDPIC marker cleared", ret == 0, + strerror(-ret)); + + if (ret == 0) + { + args[0] = (FAR char *)"corrupt"; + args[1] = NULL; + + CHECK("a module without the FDPIC marker is refused", + run_module(PATH("corrupt"), args) < 0, "it loaded anyway"); + } + + unlink(PATH("corrupt")); + + /* A leaf library -- one that calls nothing outside itself. + * + * With no external calls there is no PLT and so no DT_PLTGOT, and the + * loader has to fall back to PT_DYNAMIC vaddr + memsz to find the GOT. + * That fallback is inferred from the linker's layout rather than from the + * ABI document, which makes it the least certain thing in the loader. + * libshape below does not exercise it -- it calls syslog, so it has a + * PLT. If the fallback were wrong the library could not reach its own + * globals, and the total would come back wrong. + */ + + ret = stage_blob(PATH("libcounter.so"), g_libcounter, g_libcounter_len); + CHECK("stage the leaf library", ret == 0, strerror(-ret)); + + ret = stage_blob(PATH("counteruser"), g_counteruser, g_counteruser_len); + CHECK("stage its consumer", ret == 0, strerror(-ret)); + + args[0] = (FAR char *)"counteruser"; + args[1] = (FAR char *)"2"; + args[2] = NULL; + + ret = run_module(PATH("counteruser"), args); + CHECK("a leaf library with no DT_PLTGOT reaches its own data", + ret == 0, ret < 0 ? strerror(-ret) : "wrong total"); + + unlink(PATH("counteruser")); + unlink(PATH("libcounter.so")); + + /* C++: a shared library and a module, both with global objects. Two + * instances run concurrently, because private-per-instance library state + * is only observable while they overlap. + */ + + ret = stage_blob(PATH("libshape.so"), g_libshape, g_libshape_len); + CHECK("stage the C++ shared library", ret == 0, strerror(-ret)); + + ret = stage_blob(PATH("cxxuser"), g_cxxuser, g_cxxuser_len); + CHECK("stage the C++ module", ret == 0, strerror(-ret)); + + for (i = 0; i < 2; i++) + { + snprintf(seed[i], sizeof(seed[i]), "%d", i + 1); + snprintf(marker[i], sizeof(marker[i]), PATH("dtor%d"), i + 1); + snprintf(result[i], sizeof(result[i]), PATH("res%d"), i + 1); + unlink(marker[i]); + unlink(result[i]); + + args[0] = (FAR char *)"cxxuser"; + args[1] = seed[i]; + args[2] = marker[i]; + args[3] = result[i]; + args[4] = NULL; + + if (posix_spawn(&pid[i], PATH("cxxuser"), NULL, NULL, args, NULL) != 0) + { + pid[i] = -1; + } + } + + CHECK("two C++ instances spawn", pid[0] > 0 && pid[1] > 0, + "posix_spawn failed"); + + usleep(150000); + + ret = extent_info(PATH("libshape.so"), &info); + CHECK("one flash copy of the library, pinned once per instance", + ret == 0 && info.pincount == 2, "wrong pin count"); + + /* Wait for both, but do not read the exit status from waitpid(). + * + * waitpid() only keeps the status of an already-exited child when + * CONFIG_SCHED_CHILD_STATUS is set, which needs CONFIG_SCHED_HAVE_PARENT + * -- neither of which this test should require. Both instances run for + * the same 300ms, so the second has always exited by the time the first + * waitpid() returns, and its status is simply gone. Each instance + * therefore records its own result in a file, which survives both the + * task and the unload. waitpid() here is only a barrier, and may fail. + */ + + for (i = 0; i < 2; i++) + { + int status; + + if (pid[i] > 0) + { + waitpid(pid[i], &status, 0); + } + } + + fails = 0; + ok = true; + + for (i = 0; i < 2; i++) + { + ret = read_marker(result[i]); + if (ret < 0) + { + ok = false; + } + else + { + fails |= ret; + } + } + + CHECK("both C++ instances ran to completion", ok, + "an instance left no result"); + + CHECK("the module's own global constructor ran", + (fails & USER_FAIL_OWN_CTOR) == 0, "global left as .bss"); + CHECK("the library's global constructor ran", + (fails & USER_FAIL_LIB_CTOR) == 0, "global left as .bss"); + CHECK("the library was constructed before the module needing it", + (fails & USER_FAIL_ORDER) == 0, "wrong DT_NEEDED order"); + CHECK("each instance has its own copy of the library's data", + (fails & USER_FAIL_PRIVATE) == 0, "library state was shared"); + + /* Destructors run on unload, which happens as each task is reaped -- + * after waitpid() has already returned. + */ + + usleep(200000); + + ok = true; + for (i = 0; i < 2; i++) + { + if (read_marker(marker[i]) != (i + 1) * 3) + { + ok = false; + } + } + + CHECK("destructors ran on unload, each with its instance's own state", + ok, "marker missing or wrong"); + + ret = extent_info(PATH("libshape.so"), &info); + CHECK("the library's pins return to zero once both instances are gone", + ret == 0 && info.pincount == 0, "pin leaked"); + + for (i = 0; i < 2; i++) + { + unlink(marker[i]); + unlink(result[i]); + } + + unlink(PATH("cxxuser")); + unlink(PATH("libshape.so")); +} + +/**************************************************************************** + * Name: dup_blob + * + * Description: + * A private, writable copy of an embedded module image, for mutating into + * a malformed one. The original is const .rodata and must not be touched. + * + ****************************************************************************/ + +static FAR unsigned char *dup_blob(FAR const unsigned char *src, + unsigned int len) +{ + FAR unsigned char *copy = malloc(len); + + if (copy != NULL) + { + memcpy(copy, src, len); + } + + return copy; +} + +/**************************************************************************** + * Name: corrupt_dyn + * + * Description: + * Rewrite the value of one PT_DYNAMIC tag in place. Returns true if the + * tag was present. This reaches the dynamic array straight through the + * program header's file offset, so it needs no vaddr-to-file mapping. + * + ****************************************************************************/ + +static bool corrupt_dyn(FAR unsigned char *buf, unsigned int len, + int32_t tag, uint32_t newval) +{ + FAR const Elf32_Ehdr *eh = (FAR const Elf32_Ehdr *)buf; + FAR const Elf32_Phdr *ph; + unsigned int i; + + if (len < sizeof(Elf32_Ehdr) || + eh->e_phoff + (uint32_t)eh->e_phnum * sizeof(Elf32_Phdr) > len) + { + return false; + } + + ph = (FAR const Elf32_Phdr *)(buf + eh->e_phoff); + for (i = 0; i < eh->e_phnum; i++) + { + if (ph[i].p_type == PT_DYNAMIC && + ph[i].p_offset + ph[i].p_filesz <= len) + { + FAR Elf32_Dyn *dyn = (FAR Elf32_Dyn *)(buf + ph[i].p_offset); + unsigned int n = ph[i].p_filesz / sizeof(Elf32_Dyn); + unsigned int j; + + for (j = 0; j < n && dyn[j].d_tag != DT_NULL; j++) + { + if (dyn[j].d_tag == tag) + { + dyn[j].d_un.d_val = newval; + return true; + } + } + } + } + + return false; +} + +/**************************************************************************** + * Name: expect_refused + * + * Description: + * Stage an image and assert the loader declines it. A refusal is any + * negative return: binfmt collapses "the loader rejected it" and "not my + * format" into one answer (see run_module), which is all this needs to + * know -- the point is that a malformed image never loads and runs. + * + ****************************************************************************/ + +static void expect_refused(FAR const char *what, + FAR const unsigned char *img, unsigned int len) +{ + FAR char *args[2]; + int ret; + + ret = stage_blob(PATH("reject"), img, len); + if (ret < 0) + { + CHECK(what, false, "could not stage the mutant"); + return; + } + + args[0] = (FAR char *)"reject"; + args[1] = NULL; + + CHECK(what, run_module(PATH("reject"), args) < 0, "it loaded anyway"); + unlink(PATH("reject")); +} + +/**************************************************************************** + * Test: the loader refuses malformed modules + * + * A loader that accepts anything is a loader whose acceptance means nothing. + * The paths above are what the loader does when it succeeds; these are its + * rejections. Each is synthesised by mutating a module that is known to + * load, so nothing but the defect under test differs, and each must come + * back *refused* rather than loaded-and-then-faulting -- the latter is the + * failure mode that takes the board down instead of printing FAIL. + ****************************************************************************/ + +static void test_fdpic_reject(void) +{ + FAR unsigned char *img; + int ret; + + printf("\n-- FDPIC loader rejections --\n"); + + /* A 64-bit class byte: the loader is 32-bit only. */ + + img = dup_blob(g_funcdesc, g_funcdesc_len); + if (img != NULL) + { + img[EI_CLASS] = ELFCLASS64; + expect_refused("a non-32-bit ELF class is refused", img, + g_funcdesc_len); + free(img); + } + + /* Not a shared object. An FDPIC module is ET_DYN; anything else is not a + * module even with the FDPIC marker set. + */ + + img = dup_blob(g_funcdesc, g_funcdesc_len); + if (img != NULL) + { + ((FAR Elf32_Ehdr *)img)->e_type = ET_EXEC; + expect_refused("a non-ET_DYN object is refused", img, g_funcdesc_len); + free(img); + } + + /* Wrong machine. A module built for another architecture must be turned + * away before any of its relocations are applied. + */ + + img = dup_blob(g_funcdesc, g_funcdesc_len); + if (img != NULL) + { + ((FAR Elf32_Ehdr *)img)->e_machine = EM_X86_64; + expect_refused("a module for the wrong machine is refused", img, + g_funcdesc_len); + free(img); + } + + /* RELA PLT relocations. Nothing in the loader reads RELA; an object + * claiming that layout for its PLT must be refused, not walked as REL -- + * the entries are 12 bytes rather than 8, so misreading them would apply + * garbage. lazymod carries its imports in DT_JMPREL, so it has the + * DT_PLTREL tag to flip. + */ + + img = dup_blob(g_lazymod, g_lazymod_len); + if (img != NULL) + { + if (corrupt_dyn(img, g_lazymod_len, DT_PLTREL, DT_RELA)) + { + expect_refused("a module with RELA PLT relocations is refused", + img, g_lazymod_len); + } + else + { + CHECK("a module with RELA PLT relocations is refused", false, + "lazymod has no DT_PLTREL to corrupt"); + } + + free(img); + } + + /* A named dependency that is not there. counteruser needs libcounter.so; + * with the library absent the loader must fail the whole load rather than + * leave the module's imports dangling. + */ + + ret = stage_blob(PATH("counteruser"), g_counteruser, g_counteruser_len); + if (ret == 0) + { + FAR char *args[3]; + + unlink(PATH("libcounter.so")); + + args[0] = (FAR char *)"counteruser"; + args[1] = (FAR char *)"2"; + args[2] = NULL; + + CHECK("a module whose needed library is absent is refused", + run_module(PATH("counteruser"), args) < 0, "it loaded anyway"); + + unlink(PATH("counteruser")); + } + else + { + CHECK("a module whose needed library is absent is refused", false, + "could not stage counteruser"); + } + + /* An import the firmware does not export. The module links cleanly -- the + * symbol is just an undefined import -- so the loader is the only thing + * that can catch it, when resolution fails rather than at link time. This + * is a different path from the absent-library case above: the dependency + * resolves, the symbol inside it does not. + */ + + expect_refused("a module importing an unexported symbol is refused", + g_missingsym, g_missingsym_len); + + /* More than FDPIC_MAX_NEEDED (8) DT_NEEDED entries. The module is refused + * while its dynamic section is parsed, before any dependency is loaded, so + * the nine libraries it was linked against need not be present. + */ + + expect_refused("a module with too many DT_NEEDED entries is refused", + g_manyneeded, g_manyneeded_len); +} +#endif /* CONFIG_FDPIC */ + /**************************************************************************** * Name: want * @@ -2012,6 +2722,10 @@ int main(int argc, FAR char *argv[]) SECTION("multimap", test_multimap); SECTION("crosstask", test_crosstask_pins); SECTION("teardown", test_teardown_release); +#ifdef CONFIG_FDPIC + SECTION("fdpic", test_fdpic); + SECTION("reject", test_fdpic_reject); +#endif SECTION("dirs", test_dirs); SECTION("defrag", test_defrag); SECTION("powerloss", test_powerloss);