diff -Nru intel-vaapi-driver-1.6.2/aclocal.m4 intel-vaapi-driver-1.7.1/aclocal.m4 --- intel-vaapi-driver-1.6.2/aclocal.m4 2015-12-15 06:00:44.000000000 +0000 +++ intel-vaapi-driver-1.7.1/aclocal.m4 2016-06-21 02:07:53.000000000 +0000 @@ -20,5022 +20,3895 @@ If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.14' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.14.1], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.14.1])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 # -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to -# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 # -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. +# This file is part of GNU Libtool. # -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. # -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is '.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. # -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) -# AM_CONDITIONAL -*- Autoconf -*- +# serial 57 LT_INIT -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) -# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named 'D' -- because '-MD' means "put the output - # in D". - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with '-c' and '-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle '-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # After this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested. - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) +_LT_SETUP +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) -# Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each '.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi ]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi -# Do all the work for Automake. -*- Autoconf -*- +_LT_CHECK_OBJDIR -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +m4_require([_LT_TAG_COMPILER])dnl -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) +# Global variables: +ofile=libtool +can_build_shared=yes -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.65])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) +with_gnu_ld="$lt_cv_prog_gnu_ld" -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +old_CC="$CC" +old_CFLAGS="$CFLAGS" -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) - AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) -AM_MISSING_PROG([AUTOCONF], [autoconf]) -AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) -AM_MISSING_PROG([AUTOHEADER], [autoheader]) -AM_MISSING_PROG([MAKEINFO], [makeinfo]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +_LT_CC_BASENAME([$compiler]) -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi]) +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) -# Check to see how 'make' treats includes. -*- Autoconf -*- +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) -# Copyright (C) 1997-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) ]) -# Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) -# Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac -# Do 'set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken - alias in your environment]) - fi - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT([yes]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) -# Copyright (C) 2009-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl ]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) -# Copyright (C) 2001-2013 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor 'install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in "make install-strip", and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using 'strip' when the user -# run "make install-strip". However 'strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the 'STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) -# Copyright (C) 2006-2013 Free Software Foundation, Inc. + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: # -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) -# Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: # -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - [pax], - [], - [m4_fatal([Unknown tar format])]) +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - AC_MSG_CHECKING([how to create a $1 tar archive]) - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; - none) - am__tar=false - am__tar_=false - am__untar=false + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac +done - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +_LT_OUTPUT_LIBTOOL_INIT +]) - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) +Usage: $[0] [[OPTIONS]] -# serial 57 LT_INIT + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files +Report bugs to ." -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl -_LT_SETUP +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG +_LT_EOF -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + _LT_PROG_LTMAIN -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl + _LT_PROG_REPLACE_SHELLFNS -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" -_LT_CHECK_OBJDIR +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG -m4_require([_LT_TAG_COMPILER])dnl -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) -# Global variables: -ofile=libtool -can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) -with_gnu_ld="$lt_cv_prog_gnu_ld" -old_CC="$CC" -old_CFLAGS="$CFLAGS" +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o -_LT_CC_BASENAME([$compiler]) +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi ]) +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH -# _LT_LIBTOOL_TAGS +# _LT_WITH_SYSROOT # ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; esac -done + fi + rm -rf conftest* + ;; -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac ;; esac -done + fi + rm -rf conftest* + ;; +esac -_LT_OUTPUT_LIBTOOL_INIT -]) +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR -Usage: $[0] [[OPTIONS]] - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR -Report bugs to ." +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi -_LTEOF -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) -_LT_EOF - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; - esac - _LT_PROG_LTMAIN + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; - _LT_PROG_REPLACE_SHELLFNS + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" +#if HAVE_DLFCN_H +#include +#endif -m4_ifndef([AC_PROG_GO], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef +#include +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test $_lt_result -eq 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; esac -]) +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' + need_locks=no fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac + AC_MSG_RESULT([no]) fi - fi - rm -rf conftest* - ;; + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' ;; -*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD="${LD-ld}_sol2" - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi ;; esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH fi - rm -rf conftest* ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' ;; + *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; -#if HAVE_DLFCN_H -#include -#endif +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; -#include +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif +rdos*) + dynamic_linker=no + ;; -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; esac - else : - # compilation failed - $3 fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF + sys_lib_dlsearch_path_spec='/usr/lib' + ;; +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 /dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext +# _LT_PATH_LD_GNU +#- -------------- +m4_defun([_LT_PATH_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O +# _LT_CMD_RELOAD +# -------------- +# find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +m4_defun([_LT_CMD_RELOAD], +[AC_CACHE_CHECK([for $LD option to reload object files], + lt_cv_ld_reload_flag, + [lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac +_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl +_LT_TAGDECL([], [reload_cmds], [2])dnl +])# _LT_CMD_RELOAD -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR +beos*) + lt_cv_deplibs_check_method=pass_all + ;; +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + ;; -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) - AC_MSG_RESULT([no]) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB + ;; +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no + lt_cv_deplibs_check_method=pass_all + ;; -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all ;; -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH +rdos*) + lt_cv_deplibs_check_method=pass_all ;; -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs +solaris*) + lt_cv_deplibs_check_method=pass_all ;; -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi ;; + esac +fi - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" ;; *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") + DUMPBIN=: ;; esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes +irix* | nonstopux*) + symcode='[[BCDEGRST]]' ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' +osf*) + symcode='[[BCDEGQRST]]' ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi +solaris*) + symcode='[[BDRT]]' ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH +sco3.2v5*) + symcode='[[DT]]' ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +sysv4.2uw2*) + symcode='[[DT]]' ;; - -rdos*) - dynamic_linker=no +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' +sysv4) + symcode='[[DFNSTU]]' ;; +esac -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; +esac -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; + # Check to see that the pipe works correctly. + pipe_works=no -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi +#ifdef __cplusplus +extern "C" { +#endif -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + cat <<_LT_EOF >> conftest.$ac_ext -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif +#ifdef __cplusplus +} +#endif _LT_EOF - fi ;; - esac + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi - break + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break else - MAGIC_CMD=: + lt_cv_sys_global_symbol_pipe= fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) fi -])# _LT_PATH_MAGIC +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi ;; amigaos*) @@ -6884,473 +5757,961 @@ ])# _LT_LINKER_SHLIBS -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -# Source file extension for C test sources. -ac_ext=c + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE + else + GXX=no + with_gnu_ld=no + wlarc= + fi -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; -# Source file extension for C++ test sources. -ac_ext=cpp + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler - if test "$GXX" = yes; then - # Set up default GNU C++ configuration + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - LT_PATH_LD + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; - else - GXX=no - with_gnu_ld=no - wlarc= - fi + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) + m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no + ;; - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no ;; - esac + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; - chorus*) + osf3* | osf4* | osf5*) case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; - dgux*) + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) case $cc_basename in - ec++*) + CC*) + # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; - ghcx*) - # Green Hills C++ Compiler + lcc*) + # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; @@ -7361,650 +6722,705 @@ esac ;; - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; + output_verbose_link_cmd='func_echo_all' - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; esac ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' - case $cc_basename in + case $cc_basename in CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler + *) ;; # Ignore the rest. - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + esac + done - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; +# Source file extension for f77 test sources. +ac_ext=f - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no - _LT_TAGVAR(hardcode_libdir_separator, $1)=: + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; + _LT_CONFIG($1) + fi # test -n "$compiler" - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; +AC_LANG_POP +])# _LT_LANG_F77_CONFIG - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) - output_verbose_link_cmd='func_echo_all' +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi ;; esac + AC_MSG_RESULT([$enable_shared]) - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) - _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: @@ -8022,1904 +7438,2474 @@ _LT_CONFIG($1) fi # test -n "$compiler" + GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes +fi # test "$_lt_disable_FC" != yes AC_LANG_POP -])# _LT_LANG_CXX_CONFIG +])# _LT_LANG_FC_CONFIG -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) ]) -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) - *) ;; # Ignore the rest. - esac - done +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - # Clean up. - rm -f a.out a.exe +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset else - echo "libtool.m4: error: problem compiling $1 test program" + lt_unset=false fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -# Source file extension for f77 test sources. -ac_ext=f + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS - _LT_CONFIG($1) - fi # test -n "$compiler" +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes +# serial 7 ltoptions.m4 -AC_LANG_POP -])# _LT_LANG_F77_CONFIG +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) - _LT_CONFIG($1) - fi # test -n "$compiler" +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) -AC_LANG_POP -])# _LT_LANG_FC_CONFIG +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac -# Source file extension for Java test sources. -ac_ext=java +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) - _LT_CONFIG($1) -fi +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) -AC_LANG_RESTORE +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE -# Source file extension for Go test sources. -ac_ext=go +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - _LT_CONFIG($1) -fi +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL -AC_LANG_RESTORE +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) -# Source file extension for RC test sources. -ac_ext=rc -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) +# serial 6 ltsugar.m4 -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) +# @configure_input@ - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) +# serial 5 lt~obsolete.m4 - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi -]) +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG -# Helper functions for option handling. -*- Autoconf -*- +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) # -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 # -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl -# serial 7 ltoptions.m4 +pkg_failed=no +AC_MSG_CHECKING([for $1]) -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) +$$1_PKG_ERRORS +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. +_PKG_TEXT -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.14' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.14.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.14.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) +# AM_CONDITIONAL -*- Autoconf -*- +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) +# Do all the work for Automake. -*- Autoconf -*- -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for lt_pkg in $withval; do - IFS="$lt_save_ifs" - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [pic_mode=default]) +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC +# Check to see how 'make' treats includes. -*- Autoconf -*- -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +# Helper functions for option handling. -*- Autoconf -*- -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) +# Check to make sure that the build environment is sane. -*- Autoconf -*- -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# serial 3337 ltversion.m4 -# This file is part of GNU Libtool +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac -m4_define([LT_PACKAGE_VERSION], [2.4.2]) -m4_define([LT_PACKAGE_REVISION], [1.3337]) +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.2' -macro_revision='1.3337' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file ]) -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# Copyright (C) 2009-2013 Free Software Foundation, Inc. # -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) -# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -# serial 1 (pkg-config-0.24) -# -# Copyright © 2004 Scott James Remnant . -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# PKG_PROG_PKG_CONFIG([MIN-VERSION]) -# ---------------------------------- -AC_DEFUN([PKG_PROG_PKG_CONFIG], -[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) -m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) -AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) -AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=m4_default([$1], [0.9.0]) - AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - PKG_CONFIG="" - fi -fi[]dnl -])# PKG_PROG_PKG_CONFIG +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) -# -# Check to see whether a particular set of modules exists. Similar -# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# Copyright (C) 2006-2013 Free Software Foundation, Inc. # -# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -# only at the first occurence in configure.ac, so if the first place -# it's called might be skipped (such as if it is within an "if", you -# have to call PKG_CHECK_EXISTS manually -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_EXISTS], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -if test -n "$PKG_CONFIG" && \ - AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_default([$2], [:]) -m4_ifvaln([$3], [else - $3])dnl -fi]) +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) -# --------------------------------------------- -m4_define([_PKG_CONFIG], -[if test -n "$$1"; then - pkg_cv_[]$1="$$1" - elif test -n "$PKG_CONFIG"; then - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes ], - [pkg_failed=yes]) - else - pkg_failed=untried -fi[]dnl -])# _PKG_CONFIG +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) -# _PKG_SHORT_ERRORS_SUPPORTED -# ----------------------------- -AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi[]dnl -])# _PKG_SHORT_ERRORS_SUPPORTED +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +# Check how to create a tarball. -*- Autoconf -*- -# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], -# [ACTION-IF-NOT-FOUND]) +# Copyright (C) 2004-2013 Free Software Foundation, Inc. # +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # -# Note that if there is a possibility the first call to -# PKG_CHECK_MODULES might not happen, you should be sure to include an -# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar # +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar # -# -------------------------------------------------------------- -AC_DEFUN([PKG_CHECK_MODULES], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl -AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl - -pkg_failed=no -AC_MSG_CHECKING([for $1]) - -_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) -_PKG_CONFIG([$1][_LIBS], [libs], [$2]) - -m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS -and $1[]_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details.]) +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) -if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) - _PKG_SHORT_ERRORS_SUPPORTED - if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - m4_default([$4], [AC_MSG_ERROR( -[Package requirements ($2) were not met: +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], -$$1_PKG_ERRORS + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. + [pax], + [], -_PKG_TEXT])[]dnl - ]) -elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( -[The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. + [m4_fatal([Unknown tar format])]) -_PKG_TEXT + AC_MSG_CHECKING([how to create a $1 tar archive]) -To get pkg-config, see .])[]dnl - ]) -else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS - AC_MSG_RESULT([yes]) - $3 -fi[]dnl -])# PKG_CHECK_MODULES + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} -AC_DEFUN([WAYLAND_SCANNER_RULES], [ - PKG_PROG_PKG_CONFIG + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner]) + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break - wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner` - AC_SUBST([wayland_scanner]) + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir - wayland_scanner_rules=`$PKG_CONFIG --variable=pkgdatadir wayland-scanner`/wayland-scanner.mk - AC_SUBST_FILE([wayland_scanner_rules]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - AC_SUBST([wayland_protocoldir], [$1]) -]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR diff -Nru intel-vaapi-driver-1.6.2/configure intel-vaapi-driver-1.7.1/configure --- intel-vaapi-driver-1.6.2/configure 2015-12-15 06:00:47.000000000 +0000 +++ intel-vaapi-driver-1.7.1/configure 2016-06-21 02:07:54.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for intel_driver 1.6.2. +# Generated by GNU Autoconf 2.69 for intel_driver 1.7.1. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='intel_driver' PACKAGE_TARNAME='libva-intel-driver' -PACKAGE_VERSION='1.6.2' -PACKAGE_STRING='intel_driver 1.6.2' +PACKAGE_VERSION='1.7.1' +PACKAGE_STRING='intel_driver 1.7.1' PACKAGE_BUGREPORT='haihao.xiang@intel.com' PACKAGE_URL='' @@ -636,16 +636,11 @@ am__EXEEXT_TRUE LTLIBOBJS LIBOBJS -wayland_protocoldir -wayland_scanner -WAYLAND_SCANNER_LIBS -WAYLAND_SCANNER_CFLAGS USE_WAYLAND_FALSE USE_WAYLAND_TRUE +WAYLAND_SCANNER LIBVA_WAYLAND_DEPS_LIBS LIBVA_WAYLAND_DEPS_CFLAGS -WAYLAND_LIBS -WAYLAND_CFLAGS USE_EGL_FALSE USE_EGL_TRUE EGL_LIBS @@ -790,7 +785,7 @@ PACKAGE_NAME PATH_SEPARATOR SHELL' -ac_subst_files='wayland_scanner_rules' +ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules @@ -834,12 +829,8 @@ LIBVA_DRIVERS_PATH EGL_CFLAGS EGL_LIBS -WAYLAND_CFLAGS -WAYLAND_LIBS LIBVA_WAYLAND_DEPS_CFLAGS -LIBVA_WAYLAND_DEPS_LIBS -WAYLAND_SCANNER_CFLAGS -WAYLAND_SCANNER_LIBS' +LIBVA_WAYLAND_DEPS_LIBS' # Initialize some variables set by options. @@ -1380,7 +1371,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures intel_driver 1.6.2 to adapt to many kinds of systems. +\`configure' configures intel_driver 1.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1451,7 +1442,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of intel_driver 1.6.2:";; + short | recursive ) echo "Configuration of intel_driver 1.7.1:";; esac cat <<\_ACEOF @@ -1522,18 +1513,10 @@ drivers install path EGL_CFLAGS C compiler flags for EGL, overriding pkg-config EGL_LIBS linker flags for EGL, overriding pkg-config - WAYLAND_CFLAGS - C compiler flags for WAYLAND, overriding pkg-config - WAYLAND_LIBS - linker flags for WAYLAND, overriding pkg-config LIBVA_WAYLAND_DEPS_CFLAGS C compiler flags for LIBVA_WAYLAND_DEPS, overriding pkg-config LIBVA_WAYLAND_DEPS_LIBS linker flags for LIBVA_WAYLAND_DEPS, overriding pkg-config - WAYLAND_SCANNER_CFLAGS - C compiler flags for WAYLAND_SCANNER, overriding pkg-config - WAYLAND_SCANNER_LIBS - linker flags for WAYLAND_SCANNER, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1601,7 +1584,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -intel_driver configure 1.6.2 +intel_driver configure 1.7.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1970,7 +1953,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by intel_driver $as_me 1.6.2, which was +It was created by intel_driver $as_me 1.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2834,7 +2817,7 @@ # Define the identity of the package. PACKAGE='libva-intel-driver' - VERSION='1.6.2' + VERSION='1.7.1' cat >>confdefs.h <<_ACEOF @@ -3047,16 +3030,16 @@ INTEL_DRIVER_MAJOR_VERSION=1 -INTEL_DRIVER_MINOR_VERSION=6 -INTEL_DRIVER_MICRO_VERSION=2 +INTEL_DRIVER_MINOR_VERSION=7 +INTEL_DRIVER_MICRO_VERSION=1 $as_echo "#define INTEL_DRIVER_MAJOR_VERSION 1" >>confdefs.h -$as_echo "#define INTEL_DRIVER_MINOR_VERSION 6" >>confdefs.h +$as_echo "#define INTEL_DRIVER_MINOR_VERSION 7" >>confdefs.h -$as_echo "#define INTEL_DRIVER_MICRO_VERSION 2" >>confdefs.h +$as_echo "#define INTEL_DRIVER_MICRO_VERSION 1" >>confdefs.h $as_echo "#define INTEL_DRIVER_PRE_VERSION 0" >>confdefs.h @@ -13133,10 +13116,10 @@ done -LIBVA_PACKAGE_VERSION=1.6.0 +LIBVA_PACKAGE_VERSION=1.7.1 -LIBDRM_VERSION=2.4.45 +LIBDRM_VERSION=2.4.52 @@ -13540,12 +13523,12 @@ pkg_cv_LIBVA_DEPS_CFLAGS="$LIBVA_DEPS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libva >= 0.38\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libva >= 0.38") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libva >= 0.39.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libva >= 0.39.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBVA_DEPS_CFLAGS=`$PKG_CONFIG --cflags "libva >= 0.38" 2>/dev/null` + pkg_cv_LIBVA_DEPS_CFLAGS=`$PKG_CONFIG --cflags "libva >= 0.39.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13557,12 +13540,12 @@ pkg_cv_LIBVA_DEPS_LIBS="$LIBVA_DEPS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libva >= 0.38\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libva >= 0.38") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libva >= 0.39.2\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libva >= 0.39.2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBVA_DEPS_LIBS=`$PKG_CONFIG --libs "libva >= 0.38" 2>/dev/null` + pkg_cv_LIBVA_DEPS_LIBS=`$PKG_CONFIG --libs "libva >= 0.39.2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13583,14 +13566,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBVA_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libva >= 0.38" 2>&1` + LIBVA_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libva >= 0.39.2" 2>&1` else - LIBVA_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libva >= 0.38" 2>&1` + LIBVA_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libva >= 0.39.2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBVA_DEPS_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libva >= 0.38) were not met: + as_fn_error $? "Package requirements (libva >= 0.39.2) were not met: $LIBVA_DEPS_PKG_ERRORS @@ -14005,77 +13988,6 @@ if test "$enable_wayland" = "yes"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND" >&5 -$as_echo_n "checking for WAYLAND... " >&6; } - -if test -n "$WAYLAND_CFLAGS"; then - pkg_cv_WAYLAND_CFLAGS="$WAYLAND_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client\""; } >&5 - ($PKG_CONFIG --exists --print-errors "wayland-client") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags "wayland-client" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$WAYLAND_LIBS"; then - pkg_cv_WAYLAND_LIBS="$WAYLAND_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client\""; } >&5 - ($PKG_CONFIG --exists --print-errors "wayland-client") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs "wayland-client" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi - - - -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no -fi - if test $_pkg_short_errors_supported = yes; then - WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "wayland-client" 2>&1` - else - WAYLAND_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "wayland-client" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$WAYLAND_PKG_ERRORS" >&5 - - : -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - : -else - WAYLAND_CFLAGS=$pkg_cv_WAYLAND_CFLAGS - WAYLAND_LIBS=$pkg_cv_WAYLAND_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - USE_WAYLAND="yes" -fi - -pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBVA_WAYLAND_DEPS" >&5 $as_echo_n "checking for LIBVA_WAYLAND_DEPS... " >&6; } @@ -14133,60 +14045,42 @@ # Put the nasty error message in config.log where it belongs echo "$LIBVA_WAYLAND_DEPS_PKG_ERRORS" >&5 - USE_WAYLAND="no" + : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - USE_WAYLAND="no" + : else LIBVA_WAYLAND_DEPS_CFLAGS=$pkg_cv_LIBVA_WAYLAND_DEPS_CFLAGS LIBVA_WAYLAND_DEPS_LIBS=$pkg_cv_LIBVA_WAYLAND_DEPS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - -$as_echo "#define HAVE_VA_WAYLAND 1" >>confdefs.h - -fi -fi - if test "$USE_WAYLAND" = "yes"; then - USE_WAYLAND_TRUE= - USE_WAYLAND_FALSE='#' -else - USE_WAYLAND_TRUE='#' - USE_WAYLAND_FALSE= + USE_WAYLAND="yes" fi + if test "$USE_WAYLAND" = "yes"; then - - - - - - - - -if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 + WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client` + # Extract the first word of "wayland-scanner", so it can be a program name with args. +set dummy wayland-scanner; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : +if ${ac_cv_path_WAYLAND_SCANNER+:} false; then : $as_echo_n "(cached) " >&6 else - case $PKG_CONFIG in + case $WAYLAND_SCANNER in [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ac_cv_path_WAYLAND_SCANNER="$WAYLAND_SCANNER" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH +for as_dir in ${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_WAYLAND_SCANNER="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -14197,191 +14091,32 @@ ;; esac fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } +WAYLAND_SCANNER=$ac_cv_path_WAYLAND_SCANNER +if test -n "$WAYLAND_SCANNER"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WAYLAND_SCANNER" >&5 +$as_echo "$WAYLAND_SCANNER" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -fi -if test -n "$PKG_CONFIG"; then - _pkg_min_version=0.9.0 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 -$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi -fi - - -pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_SCANNER" >&5 -$as_echo_n "checking for WAYLAND_SCANNER... " >&6; } - -if test -n "$WAYLAND_SCANNER_CFLAGS"; then - pkg_cv_WAYLAND_SCANNER_CFLAGS="$WAYLAND_SCANNER_CFLAGS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-scanner\""; } >&5 - ($PKG_CONFIG --exists --print-errors "wayland-scanner") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_WAYLAND_SCANNER_CFLAGS=`$PKG_CONFIG --cflags "wayland-scanner" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi -if test -n "$WAYLAND_SCANNER_LIBS"; then - pkg_cv_WAYLAND_SCANNER_LIBS="$WAYLAND_SCANNER_LIBS" - elif test -n "$PKG_CONFIG"; then - if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-scanner\""; } >&5 - ($PKG_CONFIG --exists --print-errors "wayland-scanner") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_WAYLAND_SCANNER_LIBS=`$PKG_CONFIG --libs "wayland-scanner" 2>/dev/null` - test "x$?" != "x0" && pkg_failed=yes -else - pkg_failed=yes -fi - else - pkg_failed=untried -fi +$as_echo "#define HAVE_VA_WAYLAND 1" >>confdefs.h -if test $pkg_failed = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then - _pkg_short_errors_supported=yes -else - _pkg_short_errors_supported=no + fi fi - if test $_pkg_short_errors_supported = yes; then - WAYLAND_SCANNER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "wayland-scanner" 2>&1` - else - WAYLAND_SCANNER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "wayland-scanner" 2>&1` - fi - # Put the nasty error message in config.log where it belongs - echo "$WAYLAND_SCANNER_PKG_ERRORS" >&5 - - as_fn_error $? "Package requirements (wayland-scanner) were not met: - -$WAYLAND_SCANNER_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables WAYLAND_SCANNER_CFLAGS -and WAYLAND_SCANNER_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 -elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables WAYLAND_SCANNER_CFLAGS -and WAYLAND_SCANNER_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see . -See \`config.log' for more details" "$LINENO" 5; } + if test "$USE_WAYLAND" = "yes"; then + USE_WAYLAND_TRUE= + USE_WAYLAND_FALSE='#' else - WAYLAND_SCANNER_CFLAGS=$pkg_cv_WAYLAND_SCANNER_CFLAGS - WAYLAND_SCANNER_LIBS=$pkg_cv_WAYLAND_SCANNER_LIBS - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - + USE_WAYLAND_TRUE='#' + USE_WAYLAND_FALSE= fi - wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner` - - - wayland_scanner_rules=`$PKG_CONFIG --variable=pkgdatadir wayland-scanner`/wayland-scanner.mk - - wayland_protocoldir='$(top_builddir)/src/wayland' - - - -ac_config_files="$ac_config_files Makefile debian.upstream/Makefile src/Makefile src/shaders/Makefile src/shaders/h264/Makefile src/shaders/h264/ildb/Makefile src/shaders/h264/mc/Makefile src/shaders/mpeg2/Makefile src/shaders/mpeg2/vld/Makefile src/shaders/post_processing/Makefile src/shaders/post_processing/gen5_6/Makefile src/shaders/post_processing/gen7/Makefile src/shaders/post_processing/gen75/Makefile src/shaders/post_processing/gen8/Makefile src/shaders/post_processing/gen9/Makefile src/shaders/render/Makefile src/shaders/utils/Makefile src/shaders/vme/Makefile src/wayland/Makefile" +ac_config_files="$ac_config_files Makefile debian.upstream/Makefile src/Makefile src/shaders/Makefile src/shaders/h264/Makefile src/shaders/h264/ildb/Makefile src/shaders/h264/mc/Makefile src/shaders/mpeg2/Makefile src/shaders/mpeg2/vld/Makefile src/shaders/post_processing/Makefile src/shaders/post_processing/gen5_6/Makefile src/shaders/post_processing/gen7/Makefile src/shaders/post_processing/gen75/Makefile src/shaders/post_processing/gen8/Makefile src/shaders/post_processing/gen9/Makefile src/shaders/render/Makefile src/shaders/utils/Makefile src/shaders/vme/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -14946,7 +14681,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by intel_driver $as_me 1.6.2, which was +This file was extended by intel_driver $as_me 1.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15012,7 +14747,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -intel_driver config.status 1.6.2 +intel_driver config.status 1.7.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -15439,7 +15174,6 @@ "src/shaders/render/Makefile") CONFIG_FILES="$CONFIG_FILES src/shaders/render/Makefile" ;; "src/shaders/utils/Makefile") CONFIG_FILES="$CONFIG_FILES src/shaders/utils/Makefile" ;; "src/shaders/vme/Makefile") CONFIG_FILES="$CONFIG_FILES src/shaders/vme/Makefile" ;; - "src/wayland/Makefile") CONFIG_FILES="$CONFIG_FILES src/wayland/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -15488,24 +15222,7 @@ # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then -if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then - ac_cs_awk_getline=: - ac_cs_awk_pipe_init= - ac_cs_awk_read_file=' - while ((getline aline < (F[key])) > 0) - print(aline) - close(F[key])' - ac_cs_awk_pipe_fini= -else - ac_cs_awk_getline=false - ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" - ac_cs_awk_read_file=' - print "|#_!!_#|" - print "cat " F[key] " &&" - '$ac_cs_awk_pipe_init - # The final `:' finishes the AND list. - ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' -fi + ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this @@ -15523,17 +15240,6 @@ echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF -# Create commands to substitute file output variables. -{ - echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && - echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && - echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && - echo "_ACAWK" && - echo "_ACEOF" -} >conf$$files.sh && -. ./conf$$files.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -rm -f conf$$files.sh { echo "cat >conf$$subs.awk <<_ACEOF" && @@ -15610,7 +15316,7 @@ cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" - \$ac_cs_awk_pipe_init + } { line = $ 0 @@ -15628,16 +15334,10 @@ } else len += 1 + keylen } - if (nfields == 3 && !substed) { - key = field[2] - if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { - \$ac_cs_awk_read_file - next - } - } + print line } -\$ac_cs_awk_pipe_fini + _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -15984,12 +15684,7 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | -if $ac_cs_awk_getline; then - $AWK -f "$ac_tmp/subs.awk" -else - $AWK -f "$ac_tmp/subs.awk" | $SHELL -fi \ +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && diff -Nru intel-vaapi-driver-1.6.2/configure.ac intel-vaapi-driver-1.7.1/configure.ac --- intel-vaapi-driver-1.6.2/configure.ac 2015-12-15 05:57:59.000000000 +0000 +++ intel-vaapi-driver-1.7.1/configure.ac 2016-06-21 02:05:31.000000000 +0000 @@ -1,7 +1,7 @@ # intel-driver package version number m4_define([intel_driver_major_version], [1]) -m4_define([intel_driver_minor_version], [6]) -m4_define([intel_driver_micro_version], [2]) +m4_define([intel_driver_minor_version], [7]) +m4_define([intel_driver_micro_version], [1]) m4_define([intel_driver_pre_version], [0]) m4_define([intel_driver_version], [intel_driver_major_version.intel_driver_minor_version.intel_driver_micro_version]) @@ -10,11 +10,11 @@ ]) # libva minimum version requirement -m4_define([va_api_version], [0.38]) -m4_define([libva_package_version], [1.6.0]) +m4_define([va_api_version], [0.39.2]) +m4_define([libva_package_version], [1.7.1]) # libdrm minimum version requirement -m4_define([libdrm_version], [2.4.45]) +m4_define([libdrm_version], [2.4.52]) AC_PREREQ([2.57]) AC_INIT([intel_driver], [intel_driver_version], [haihao.xiang@intel.com], @@ -173,17 +173,21 @@ # Check for Wayland USE_WAYLAND="no" if test "$enable_wayland" = "yes"; then - PKG_CHECK_MODULES([WAYLAND], [wayland-client], [USE_WAYLAND="yes"], [:]) PKG_CHECK_MODULES([LIBVA_WAYLAND_DEPS], [libva-wayland], - [AC_DEFINE([HAVE_VA_WAYLAND], [1], [Defined to 1 if VA/Wayland API is enabled])], - [USE_WAYLAND="no"]) + [USE_WAYLAND="yes"], [:]) + + if test "$USE_WAYLAND" = "yes"; then + + WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client` + AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],, + [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH]) + + AC_DEFINE([HAVE_VA_WAYLAND], [1], + [Defined to 1 if VA/Wayland API is enabled]) + fi fi AM_CONDITIONAL(USE_WAYLAND, test "$USE_WAYLAND" = "yes") -m4_ifdef([WAYLAND_SCANNER_RULES], - [WAYLAND_SCANNER_RULES(['$(top_builddir)/src/wayland'])], - [wayland_scanner_rules=""; AC_SUBST(wayland_scanner_rules)]) - AC_OUTPUT([ Makefile debian.upstream/Makefile @@ -203,7 +207,6 @@ src/shaders/render/Makefile src/shaders/utils/Makefile src/shaders/vme/Makefile - src/wayland/Makefile ]) dnl Print summary diff -Nru intel-vaapi-driver-1.6.2/debian/changelog intel-vaapi-driver-1.7.1/debian/changelog --- intel-vaapi-driver-1.6.2/debian/changelog 2016-01-12 13:44:21.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian/changelog 2016-08-31 21:30:28.000000000 +0000 @@ -1,8 +1,32 @@ -intel-vaapi-driver (1.6.2-1~ppa14.04+1) trusty; urgency=medium +intel-vaapi-driver (1.7.1-1~ppa14.04+1) trusty; urgency=medium * Merge from Debian Unstable. - -- Nicolas Derive Tue, 12 Jan 2016 14:44:05 +0100 + -- Nicolas Derive Wed, 31 Aug 2016 23:29:02 +0200 + +intel-vaapi-driver (1.7.1-1) unstable; urgency=medium + + * New upstream release. + * debian/control: + - Bump Standards-Version. + - Build-Depends: Bump libdrm-dev and libva-dev according to configure.ac. + - Description: Mention Skylake. + + -- Sebastian Ramacher Wed, 22 Jun 2016 19:08:16 +0200 + +intel-vaapi-driver (1.7.0-1) unstable; urgency=medium + + * New upstream release. + * Move to automatic debug symbol packages. + * debian/control: + - Bump Standards-Version. + - Update Vcs-*. + - Bump B-D on libva-dev to 1.7.0. + - Remove obsolete Breaks, Replaces and Provides. + * debian/{rules,i965-va-driver.install}: Update for change to a single + binary package. + + -- Sebastian Ramacher Wed, 16 Mar 2016 01:52:03 +0100 intel-vaapi-driver (1.6.2-1) unstable; urgency=medium diff -Nru intel-vaapi-driver-1.6.2/debian/control intel-vaapi-driver-1.7.1/debian/control --- intel-vaapi-driver-1.6.2/debian/control 2015-06-04 10:30:58.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian/control 2016-06-22 07:14:07.000000000 +0000 @@ -11,16 +11,16 @@ debhelper (>= 9), dh-autoreconf, intel-gpu-tools (>= 1.9) [amd64 i386], - libdrm-dev (>= 2.4.45), - libva-dev (>= 1.6.0~pre1), + libdrm-dev (>= 2.4.52), + libva-dev (>= 1.7.1), libwayland-dev (>= 1.0.0) [amd64 i386], libx11-dev, pkg-config, python [amd64 i386] -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Homepage: http://www.freedesktop.org/wiki/Software/vaapi -Vcs-Git: git://anonscm.debian.org/pkg-multimedia/intel-vaapi-driver.git -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-multimedia/intel-vaapi-driver.git +Vcs-Git: https://anonscm.debian.org/git/pkg-multimedia/intel-vaapi-driver.git +Vcs-Browser: https://anonscm.debian.org/cgit/pkg-multimedia/intel-vaapi-driver.git Package: i965-va-driver Architecture: amd64 i386 kfreebsd-amd64 kfreebsd-i386 @@ -29,12 +29,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends} -Breaks: - libva-intel-vaapi-driver (<< 1.0.16-4) -Replaces: - libva-intel-vaapi-driver Provides: - libva-intel-vaapi-driver, va-driver Enhances: libva1 @@ -54,28 +49,4 @@ * Ivy Bridge * Haswell * Broadwell - -Package: i965-va-driver-dbg -Section: debug -Priority: extra -Architecture: amd64 i386 kfreebsd-amd64 kfreebsd-i386 -Multi-Arch: same -Breaks: - libva-intel-vaapi-driver-dbg (<< 1.0.16-4) -Replaces: - libva-intel-vaapi-driver-dbg -Provides: - libva-intel-vaapi-driver-dbg -Depends: - i965-va-driver (= ${binary:Version}), - ${misc:Depends} -Description: VAAPI driver for Intel G45 & HD Graphics family (debug symbols) - The VA-API (Video Acceleration API) enables hardware accelerated video - decode/encode at various entry-points (VLD, IDCT, Motion Compensation - etc.) for the prevailing coding standards today (MPEG-2, MPEG-4 - ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3). It provides an interface - to fully expose the video decode capabilities in today's GPUs. - . - This package contains the debug files for the video decode and encode driver - backend for the Intel G45 chipsets and Intel HD Graphics for Intel Core - processor family. + * Skylake diff -Nru intel-vaapi-driver-1.6.2/debian/i965-va-driver.install intel-vaapi-driver-1.7.1/debian/i965-va-driver.install --- intel-vaapi-driver-1.6.2/debian/i965-va-driver.install 2014-06-16 08:13:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian/i965-va-driver.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/*/dri/*.so diff -Nru intel-vaapi-driver-1.6.2/debian/rules intel-vaapi-driver-1.7.1/debian/rules --- intel-vaapi-driver-1.6.2/debian/rules 2015-04-20 21:13:26.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian/rules 2016-03-16 00:44:13.000000000 +0000 @@ -6,8 +6,9 @@ %: dh $@ --parallel --with autoreconf --with libva -override_dh_strip: - dh_strip --dbg-package=i965-va-driver-dbg +override_dh_install: + find -name *.la -delete + dh_install override_dh_installchangelogs: dh_installchangelogs NEWS diff -Nru intel-vaapi-driver-1.6.2/debian/source/options intel-vaapi-driver-1.7.1/debian/source/options --- intel-vaapi-driver-1.6.2/debian/source/options 2014-06-16 08:13:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian/source/options 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -unapply-patches -abort-on-upstream-changes diff -Nru intel-vaapi-driver-1.6.2/debian.upstream/changelog intel-vaapi-driver-1.7.1/debian.upstream/changelog --- intel-vaapi-driver-1.6.2/debian.upstream/changelog 2015-12-15 06:01:02.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian.upstream/changelog 2016-06-21 02:07:56.000000000 +0000 @@ -1,5 +1,5 @@ -libva-intel-driver (1.6.2-1) unstable; urgency=low +libva-intel-driver (1.7.1-1) unstable; urgency=low * Autogenerated package, see NEWS file for ChangeLog. - -- Gwenole Beauchesne Tue, 15 Dec 2015 14:01:02 +0800 + -- Gwenole Beauchesne Tue, 21 Jun 2016 10:07:56 +0800 diff -Nru intel-vaapi-driver-1.6.2/debian.upstream/control intel-vaapi-driver-1.7.1/debian.upstream/control --- intel-vaapi-driver-1.6.2/debian.upstream/control 2015-12-15 06:01:02.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian.upstream/control 2016-06-21 02:07:56.000000000 +0000 @@ -4,14 +4,14 @@ Maintainer: Gwenole Beauchesne Build-Depends: debhelper (>= 5), cdbs, - libdrm-dev (>= 2.4.45), - libva-dev (>= 1.6.0) + libdrm-dev (>= 2.4.52), + libva-dev (>= 1.7.1) Standards-Version: 3.7.2 Package: libva-intel-driver Section: libs Architecture: any -Depends: libva1 (>= 1.6.0), +Depends: libva1 (>= 1.7.1), ${shlibs:Depends}, ${misc:Depends} Description: VA driver for Intel G45 & HD Graphics family Video decode & encode driver for Intel G45 chipsets and Intel HD diff -Nru intel-vaapi-driver-1.6.2/debian.upstream/Makefile.in intel-vaapi-driver-1.7.1/debian.upstream/Makefile.in --- intel-vaapi-driver-1.6.2/debian.upstream/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/debian.upstream/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -197,10 +197,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -253,8 +250,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ DEBIANFILES = \ changelog.in \ compat \ @@ -287,9 +282,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debian.upstream/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign debian.upstream/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu debian.upstream/Makefile + $(AUTOMAKE) --foreign debian.upstream/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/Makefile.in intel-vaapi-driver-1.7.1/Makefile.in --- intel-vaapi-driver-1.6.2/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -276,10 +276,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -332,8 +329,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ AUTOMAKE_OPTIONS = foreign SUBDIRS = debian.upstream src diff -Nru intel-vaapi-driver-1.6.2/NEWS intel-vaapi-driver-1.7.1/NEWS --- intel-vaapi-driver-1.6.2/NEWS 2015-12-15 05:58:28.000000000 +0000 +++ intel-vaapi-driver-1.7.1/NEWS 2016-06-21 01:36:08.000000000 +0000 @@ -1,5 +1,23 @@ -libva-intel-driver NEWS -- summary of changes. 2015-12-15 -Copyright (C) 2009-2015 Intel Corporation +libva-intel-driver NEWS -- summary of changes. 2016-06-21 +Copyright (C) 2009-2016 Intel Corporation + +Version 1.7.1 - 21.Jun.2016 +* Add support VP9 8bit encoding on KBL +* Add support for low-power/high-performance H.264 encoder on SKL +* Fix incorrect color space conversion in driver + (https://bugs.freedesktop.org/show_bug.cgi?id=94845) +* Fix FPS caculation for HEVC encoder +* Fix VP9 10bit decoding issue on KBL +* Fix the noise issue when VA_FILTER_SCALING_HQ upscaling from 1280x720 to 1920x1080 with YUY2 format on BDW+ + (https://bugs.freedesktop.org/show_bug.cgi?id=94765) + +Version 1.7.0 - 15.Mar.2016 +* Add support for Kabylake + - Decoding: H.264/MPEG-2/VC-1/JPEG/VP8/HEVC/HEVC 10-bit/VP9/VP9 10-bit + - Encoding: H.264/MPEG-2/JPEG/VP8/HEVC + - VPP: CSC/scaling/NoiseReduction/Deinterlacing{Bob, MotionAdaptive, MotionCompensated}/ColorBalance/STD +* Add new SKL and BXT PCI IDs +* Fix lots of VP9 decoding issues on BXT Version 1.6.2 - 15.Dec.2015 * Add support for Broxton diff -Nru intel-vaapi-driver-1.6.2/README intel-vaapi-driver-1.7.1/README --- intel-vaapi-driver-1.6.2/README 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/README 2016-06-16 00:57:46.000000000 +0000 @@ -27,7 +27,7 @@ CHV/BSW: Cherryview/Braswell SKL: Skylake BXT: Broxton - +KBL: Kabylake Codecs ------ @@ -44,9 +44,9 @@ HEVC E SKL+ VP9 D BXT+ HEVC 10bit D BXT+ - +VP9 10bit D KBL+ Requirements ------------ -libva >= 1.6.0 +libva >= 1.7.0 diff -Nru intel-vaapi-driver-1.6.2/src/gen6_mfc_common.c intel-vaapi-driver-1.7.1/src/gen6_mfc_common.c --- intel-vaapi-driver-1.6.2/src/gen6_mfc_common.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen6_mfc_common.c 2016-06-17 01:56:44.000000000 +0000 @@ -441,58 +441,6 @@ } } -static int intel_avc_find_skipemulcnt(unsigned char *buf, int bits_length) -{ - int i, found; - int leading_zero_cnt, byte_length, zero_byte; - int nal_unit_type; - int skip_cnt = 0; - -#define NAL_UNIT_TYPE_MASK 0x1f -#define HW_MAX_SKIP_LENGTH 15 - - byte_length = ALIGN(bits_length, 32) >> 3; - - - leading_zero_cnt = 0; - found = 0; - for(i = 0; i < byte_length - 4; i++) { - if (((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)) || - ((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 0) && (buf[i + 3] == 1))) { - found = 1; - break; - } - leading_zero_cnt++; - } - if (!found) { - /* warning message is complained. But anyway it will be inserted. */ - WARN_ONCE("Invalid packed header data. " - "Can't find the 000001 start_prefix code\n"); - return 0; - } - i = leading_zero_cnt; - - zero_byte = 0; - if (!((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1))) - zero_byte = 1; - - skip_cnt = leading_zero_cnt + zero_byte + 3; - - /* the unit header byte is accounted */ - nal_unit_type = (buf[skip_cnt]) & NAL_UNIT_TYPE_MASK; - skip_cnt += 1; - - if (nal_unit_type == 14 || nal_unit_type == 20 || nal_unit_type == 21) { - /* more unit header bytes are accounted for MVC/SVC */ - skip_cnt += 3; - } - if (skip_cnt > HW_MAX_SKIP_LENGTH) { - WARN_ONCE("Too many leading zeros are padded for packed data. " - "It is beyond the HW range.!!!\n"); - } - return skip_cnt; -} - void intel_mfc_avc_pipeline_header_programing(VADriverContextP ctx, struct encode_state *encode_state, struct intel_encoder_context *encoder_context, diff -Nru intel-vaapi-driver-1.6.2/src/gen75_picture_process.c intel-vaapi-driver-1.7.1/src/gen75_picture_process.c --- intel-vaapi-driver-1.6.2/src/gen75_picture_process.c 2015-12-03 15:07:29.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen75_picture_process.c 2016-06-03 06:05:58.000000000 +0000 @@ -28,6 +28,7 @@ #include #include #include +#include #include "intel_batchbuffer.h" #include "intel_driver.h" @@ -123,6 +124,15 @@ (VAProcPipelineParameterBuffer *)proc_st->pipeline_param->buffer; struct object_surface *obj_dst_surf = NULL; struct object_surface *obj_src_surf = NULL; + + VAProcPipelineParameterBuffer pipeline_param2; + struct object_surface *stage1_dst_surf = NULL; + struct object_surface *stage2_dst_surf = NULL; + VARectangle src_rect, dst_rect; + VASurfaceID tmp_surfaces[2]; + VASurfaceID out_surface_id1 = VA_INVALID_ID, out_surface_id2 = VA_INVALID_ID; + int num_tmp_surfaces = 0; + VAStatus status; proc_ctx->pipeline_param = pipeline_param; @@ -168,69 +178,221 @@ proc_ctx->surface_pipeline_input_object = obj_src_surf; assert(pipeline_param->num_filters <= 4); + int vpp_stage1 = 0, vpp_stage2 = 1, vpp_stage3 = 0; + + if (pipeline_param->surface_region) { + src_rect.x = pipeline_param->surface_region->x; + src_rect.y = pipeline_param->surface_region->y; + src_rect.width = pipeline_param->surface_region->width; + src_rect.height = pipeline_param->surface_region->height; + } else { + src_rect.x = 0; + src_rect.y = 0; + src_rect.width = obj_src_surf->orig_width; + src_rect.height = obj_src_surf->orig_height; + } + + if (pipeline_param->output_region) { + dst_rect.x = pipeline_param->output_region->x; + dst_rect.y = pipeline_param->output_region->y; + dst_rect.width = pipeline_param->output_region->width; + dst_rect.height = pipeline_param->output_region->height; + } else { + dst_rect.x = 0; + dst_rect.y = 0; + dst_rect.width = obj_dst_surf->orig_width; + dst_rect.height = obj_dst_surf->orig_height; + } + + if(obj_src_surf->fourcc == VA_FOURCC_P010) { + vpp_stage1 = 1; + vpp_stage2 = 0; + vpp_stage3 = 0; + if(pipeline_param->num_filters == 0 || pipeline_param->filters == NULL) { + if(src_rect.x != dst_rect.x || + src_rect.y != dst_rect.y || + src_rect.width != dst_rect.width || + src_rect.height != dst_rect.height) + vpp_stage2 = 1; + + if(obj_dst_surf->fourcc != VA_FOURCC_NV12 && + obj_dst_surf->fourcc != VA_FOURCC_P010) + vpp_stage2 = 1; + } + else + vpp_stage2 = 1; + + if(vpp_stage2 == 1) { + if(obj_dst_surf->fourcc == VA_FOURCC_P010) + vpp_stage3 = 1; + } + } + else if(obj_dst_surf->fourcc == VA_FOURCC_P010) { + vpp_stage2 = 1; + vpp_stage3 = 1; + + if((obj_src_surf->fourcc == VA_FOURCC_NV12) && + (pipeline_param->num_filters == 0 || pipeline_param->filters == NULL)) { + if((src_rect.x == dst_rect.x) && + (src_rect.y == dst_rect.y) && + (src_rect.width == dst_rect.width) && + (src_rect.height == dst_rect.height)) + vpp_stage2 = 0; + } + } + + if(vpp_stage1 == 1){ + memset((void *)&pipeline_param2, 0, sizeof(pipeline_param2)); + pipeline_param2.surface = pipeline_param->surface; + pipeline_param2.surface_region = &src_rect; + pipeline_param2.output_region = &src_rect; + pipeline_param2.filter_flags = 0; + pipeline_param2.num_filters = 0; + + proc_ctx->pipeline_param = &pipeline_param2; + + if(vpp_stage2 == 1) { + status = i965_CreateSurfaces(ctx, + obj_src_surf->orig_width, + obj_src_surf->orig_height, + VA_RT_FORMAT_YUV420, + 1, + &out_surface_id1); + assert(status == VA_STATUS_SUCCESS); + tmp_surfaces[num_tmp_surfaces++] = out_surface_id1; + stage1_dst_surf = SURFACE(out_surface_id1); + assert(stage1_dst_surf); + i965_check_alloc_surface_bo(ctx, stage1_dst_surf, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + + proc_ctx->surface_render_output_object = stage1_dst_surf; + } + + gen75_vpp_vebox(ctx, proc_ctx); + } + + if((vpp_stage3 == 1) && (vpp_stage2 == 1)) { + status = i965_CreateSurfaces(ctx, + obj_dst_surf->orig_width, + obj_dst_surf->orig_height, + VA_RT_FORMAT_YUV420, + 1, + &out_surface_id2); + assert(status == VA_STATUS_SUCCESS); + tmp_surfaces[num_tmp_surfaces++] = out_surface_id2; + stage2_dst_surf = SURFACE(out_surface_id2); + assert(stage2_dst_surf); + i965_check_alloc_surface_bo(ctx, stage2_dst_surf, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + } + VABufferID *filter_id = (VABufferID*) pipeline_param->filters; - - if(pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){ - /* implicity surface format coversion and scaling */ - gen75_vpp_fmt_cvt(ctx, profile, codec_state, hw_context); - }else if(pipeline_param->num_filters == 1) { - struct object_buffer * obj_buf = BUFFER((*filter_id) + 0); - - assert(obj_buf && obj_buf->buffer_store && obj_buf->buffer_store->buffer); - - if (!obj_buf || - !obj_buf->buffer_store || - !obj_buf->buffer_store->buffer) { - status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN; - goto error; - } - - VAProcFilterParameterBuffer* filter = - (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer; - - if (filter->type == VAProcFilterNoiseReduction || - filter->type == VAProcFilterDeinterlacing || - filter->type == VAProcFilterSkinToneEnhancement || - filter->type == VAProcFilterColorBalance){ - gen75_vpp_vebox(ctx, proc_ctx); - }else if(filter->type == VAProcFilterSharpening){ - if (obj_src_surf->fourcc != VA_FOURCC_NV12 || - obj_dst_surf->fourcc != VA_FOURCC_NV12) { - status = VA_STATUS_ERROR_UNIMPLEMENTED; + + if(vpp_stage2 == 1) { + if(stage1_dst_surf != NULL) { + proc_ctx->surface_pipeline_input_object = stage1_dst_surf; + proc_ctx->surface_render_output_object = obj_dst_surf; + + pipeline_param->surface = out_surface_id1; + } + + if(stage2_dst_surf != NULL) { + proc_ctx->surface_render_output_object = stage2_dst_surf; + + proc_st->current_render_target = out_surface_id2; + } + + proc_ctx->pipeline_param = pipeline_param; + + if(pipeline_param->num_filters == 0 || pipeline_param->filters == NULL ){ + /* implicity surface format coversion and scaling */ + + gen75_vpp_fmt_cvt(ctx, profile, codec_state, hw_context); + }else if(pipeline_param->num_filters == 1) { + struct object_buffer * obj_buf = BUFFER((*filter_id) + 0); + + assert(obj_buf && obj_buf->buffer_store && obj_buf->buffer_store->buffer); + + if (!obj_buf || + !obj_buf->buffer_store || + !obj_buf->buffer_store->buffer) { + status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN; goto error; } - gen75_vpp_gpe(ctx, proc_ctx); - } - }else if (pipeline_param->num_filters >= 2) { - unsigned int i = 0; - for (i = 0; i < pipeline_param->num_filters; i++){ - struct object_buffer * obj_buf = BUFFER(pipeline_param->filters[i]); - - if (!obj_buf || - !obj_buf->buffer_store || - !obj_buf->buffer_store->buffer) { - status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN; - goto error; - } + VAProcFilterParameterBuffer* filter = + (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer; - VAProcFilterParameterBuffer* filter = - (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer; + if (filter->type == VAProcFilterNoiseReduction || + filter->type == VAProcFilterDeinterlacing || + filter->type == VAProcFilterSkinToneEnhancement || + filter->type == VAProcFilterColorBalance){ + gen75_vpp_vebox(ctx, proc_ctx); + }else if(filter->type == VAProcFilterSharpening){ + if (proc_ctx->surface_pipeline_input_object->fourcc != VA_FOURCC_NV12 || + proc_ctx->surface_render_output_object->fourcc != VA_FOURCC_NV12) { + status = VA_STATUS_ERROR_UNIMPLEMENTED; + goto error; + } - if (filter->type != VAProcFilterNoiseReduction && - filter->type != VAProcFilterDeinterlacing && - filter->type != VAProcFilterSkinToneEnhancement && - filter->type != VAProcFilterColorBalance) { - fprintf(stderr, "Do not support multiply filters outside vebox pipeline \n"); - assert(0); + gen75_vpp_gpe(ctx, proc_ctx); + } + }else if (pipeline_param->num_filters >= 2) { + unsigned int i = 0; + for (i = 0; i < pipeline_param->num_filters; i++){ + struct object_buffer * obj_buf = BUFFER(pipeline_param->filters[i]); + + if (!obj_buf || + !obj_buf->buffer_store || + !obj_buf->buffer_store->buffer) { + status = VA_STATUS_ERROR_INVALID_FILTER_CHAIN; + goto error; + } + + VAProcFilterParameterBuffer* filter = + (VAProcFilterParameterBuffer*)obj_buf-> buffer_store->buffer; + + if (filter->type != VAProcFilterNoiseReduction && + filter->type != VAProcFilterDeinterlacing && + filter->type != VAProcFilterSkinToneEnhancement && + filter->type != VAProcFilterColorBalance) { + fprintf(stderr, "Do not support multiply filters outside vebox pipeline \n"); + assert(0); + } } - } - gen75_vpp_vebox(ctx, proc_ctx); - } + gen75_vpp_vebox(ctx, proc_ctx); + } + } + + if(vpp_stage3 == 1) + { + if(vpp_stage2 == 1) { + memset(&pipeline_param2, 0, sizeof(pipeline_param2)); + pipeline_param2.surface = out_surface_id2; + pipeline_param2.surface_region = &dst_rect; + pipeline_param2.output_region = &dst_rect; + pipeline_param2.filter_flags = 0; + pipeline_param2.num_filters = 0; + + proc_ctx->pipeline_param = &pipeline_param2; + proc_ctx->surface_pipeline_input_object = proc_ctx->surface_render_output_object; + proc_ctx->surface_render_output_object = obj_dst_surf; + } + + gen75_vpp_vebox(ctx, proc_ctx); + } + + if (num_tmp_surfaces) + i965_DestroySurfaces(ctx, + tmp_surfaces, + num_tmp_surfaces); return VA_STATUS_SUCCESS; error: + if (num_tmp_surfaces) + i965_DestroySurfaces(ctx, + tmp_surfaces, + num_tmp_surfaces); + return status; } diff -Nru intel-vaapi-driver-1.6.2/src/gen75_vpp_vebox.c intel-vaapi-driver-1.7.1/src/gen75_vpp_vebox.c --- intel-vaapi-driver-1.6.2/src/gen75_vpp_vebox.c 2015-12-03 15:07:29.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen75_vpp_vebox.c 2016-06-21 01:35:12.000000000 +0000 @@ -1408,7 +1408,9 @@ } else if(obj_surf_input->fourcc == VA_FOURCC_AYUV || obj_surf_input->fourcc == VA_FOURCC_YUY2 || - obj_surf_input->fourcc == VA_FOURCC_NV12){ + obj_surf_input->fourcc == VA_FOURCC_NV12 || + obj_surf_input->fourcc == VA_FOURCC_P010){ + // nothing to do here } else { /* not support other format as input */ @@ -1447,7 +1449,9 @@ proc_ctx->format_convert_flags |= POST_FORMAT_CONVERT; } else if(obj_surf_output->fourcc == VA_FOURCC_AYUV || obj_surf_output->fourcc == VA_FOURCC_YUY2 || - obj_surf_output->fourcc == VA_FOURCC_NV12){ + obj_surf_input->fourcc == VA_FOURCC_NV12 || + obj_surf_input->fourcc == VA_FOURCC_P010){ + /* Nothing to do here */ } else { /* not support other format as input */ @@ -1602,6 +1606,11 @@ proc_ctx->is_first_frame = 0; proc_ctx->is_second_field = 0; + if(!proc_ctx->is_di_enabled && !proc_ctx->is_dn_enabled) { + // MUST enable IECP if all DI&DN are disabled + proc_ctx->is_iecp_enabled = 1; + } + /* Check whether we are deinterlacing the second field */ if (proc_ctx->is_di_enabled) { const VAProcFilterParameterBufferDeinterlacing * const deint_params = @@ -2290,7 +2299,8 @@ assert(obj_surf->fourcc == VA_FOURCC_NV12 || obj_surf->fourcc == VA_FOURCC_YUY2 || obj_surf->fourcc == VA_FOURCC_AYUV || - obj_surf->fourcc == VA_FOURCC_RGBA); + obj_surf->fourcc == VA_FOURCC_RGBA || + obj_surf->fourcc == VA_FOURCC_P010); if (obj_surf->fourcc == VA_FOURCC_NV12) { surface_format = PLANAR_420_8; @@ -2312,6 +2322,11 @@ surface_pitch = obj_surf->width * 4; is_uv_interleaved = 0; half_pitch_chroma = 0; + } else if (obj_surf->fourcc == VA_FOURCC_P010) { + surface_format = PLANAR_420_16; + surface_pitch = obj_surf->width; + is_uv_interleaved = 1; + half_pitch_chroma = 0; } derived_pitch = surface_pitch; diff -Nru intel-vaapi-driver-1.6.2/src/gen8_post_processing.c intel-vaapi-driver-1.7.1/src/gen8_post_processing.c --- intel-vaapi-driver-1.6.2/src/gen8_post_processing.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen8_post_processing.c 2016-06-21 01:35:12.000000000 +0000 @@ -42,6 +42,8 @@ #include "i965_yuv_coefs.h" #include "intel_media.h" +#include "gen75_picture_process.h" + #define SURFACE_STATE_PADDED_SIZE SURFACE_STATE_PADDED_SIZE_GEN8 #define SURFACE_STATE_OFFSET(index) (SURFACE_STATE_PADDED_SIZE * index) @@ -763,6 +765,19 @@ }, }; +static int +gen8_pp_get_8tap_filter_mode(VADriverContextP ctx, + const struct i965_surface *surface) +{ + int fourcc = pp_get_surface_fourcc(ctx, surface); + + if (fourcc == VA_FOURCC_YUY2 || + fourcc == VA_FOURCC_UYVY) + return 1; + else + return 3; +} + VAStatus gen8_pp_plx_avs_initialize(VADriverContextP ctx, struct i965_post_processing_context *pp_context, const struct i965_surface *src_surface, @@ -839,7 +854,7 @@ * If the 8tap filter is disabled, the adaptive filter should be disabled. * Only when 8tap filter is enabled, it can be enabled or not. */ - sampler_8x8->dw3.enable_8tap_filter = 3; + sampler_8x8->dw3.enable_8tap_filter = gen8_pp_get_8tap_filter_mode(ctx, src_surface); sampler_8x8->dw3.ief4_smooth_enable = 0; sampler_8x8->dw4.s3u = 0; @@ -1460,6 +1475,11 @@ gen8_post_processing_context_finalize(VADriverContextP ctx, struct i965_post_processing_context *pp_context) { + if(pp_context->vebox_proc_ctx){ + gen75_vebox_context_destroy(ctx,pp_context->vebox_proc_ctx); + pp_context->vebox_proc_ctx = NULL; + } + dri_bo_unreference(pp_context->surface_state_binding_table.bo); pp_context->surface_state_binding_table.bo = NULL; diff -Nru intel-vaapi-driver-1.6.2/src/gen9_mfc_hevc.c intel-vaapi-driver-1.7.1/src/gen9_mfc_hevc.c --- intel-vaapi-driver-1.6.2/src/gen9_mfc_hevc.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_mfc_hevc.c 2016-06-16 00:57:46.000000000 +0000 @@ -152,13 +152,24 @@ int standard_select, struct intel_encoder_context *encoder_context) { + struct i965_driver_data *i965 = i965_driver_data(ctx); struct intel_batchbuffer *batch = encoder_context->base.batch; assert(standard_select == HCP_CODEC_HEVC); - BEGIN_BCS_BATCH(batch, 4); + if(IS_KBL(i965->intel.device_info)) + { + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2)); + } + else + { + BEGIN_BCS_BATCH(batch, 4); + + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2)); + } - OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2)); OUT_BCS_BATCH(batch, (standard_select << 5) | (0 << 3) | /* disable Pic Status / Error Report */ @@ -166,6 +177,12 @@ OUT_BCS_BATCH(batch, 0); OUT_BCS_BATCH(batch, 0); + if(IS_KBL(i965->intel.device_info)) + { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); } @@ -209,6 +226,7 @@ gen9_hcpe_pipe_buf_addr_state(VADriverContextP ctx, struct encode_state *encode_state, struct intel_encoder_context *encoder_context) { + struct i965_driver_data *i965 = i965_driver_data(ctx); struct intel_batchbuffer *batch = encoder_context->base.batch; struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context; struct object_surface *obj_surface; @@ -216,9 +234,18 @@ dri_bo *bo; unsigned int i; - BEGIN_BCS_BATCH(batch, 95); + if(IS_KBL(i965->intel.device_info)) + { + BEGIN_BCS_BATCH(batch, 104); - OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (95 - 2)); + OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (104 - 2)); + } + else + { + BEGIN_BCS_BATCH(batch, 95); + + OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (95 - 2)); + } obj_surface = encode_state->reconstructed_object; assert(obj_surface && obj_surface->bo); @@ -269,6 +296,12 @@ OUT_BUFFER_MA_TARGET(NULL); /* DW 89..91, ignore for HEVC */ OUT_BUFFER_MA_TARGET(NULL); /* DW 92..94, ignore for HEVC */ + if(IS_KBL(i965->intel.device_info)) + { + for(i = 0;i < 9;i++) + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); } @@ -459,6 +492,7 @@ gen9_hcpe_hevc_pic_state(VADriverContextP ctx, struct encode_state *encode_state, struct intel_encoder_context *encoder_context) { + struct i965_driver_data *i965 = i965_driver_data(ctx); struct intel_batchbuffer *batch = encoder_context->base.batch; struct gen9_hcpe_context *mfc_context = encoder_context->mfc_context; VAEncPictureParameterBufferHEVC *pic_param ; @@ -504,9 +538,18 @@ /* set zero for encoder */ loop_filter_across_tiles_enabled_flag = 0; - BEGIN_BCS_BATCH(batch, 19); + if(IS_KBL(i965->intel.device_info)) + { + BEGIN_BCS_BATCH(batch, 31); + + OUT_BCS_BATCH(batch, HCP_PIC_STATE | (31 - 2)); + } + else + { + BEGIN_BCS_BATCH(batch, 19); - OUT_BCS_BATCH(batch, HCP_PIC_STATE | (19 - 2)); + OUT_BCS_BATCH(batch, HCP_PIC_STATE | (19 - 2)); + } OUT_BCS_BATCH(batch, mfc_context->pic_size.picture_height_in_min_cb_minus1 << 16 | @@ -523,7 +566,7 @@ seq_param->log2_min_luma_coding_block_size_minus3); OUT_BCS_BATCH(batch, 0); /* DW 3, ignored */ OUT_BCS_BATCH(batch, - 0 << 27 | /* CU packet structure is 0 for SKL */ + (IS_KBL(i965->intel.device_info)? 1 : 0) << 27 | /* CU packet structure is 0 for SKL */ seq_param->seq_fields.bits.strong_intra_smoothing_enabled_flag << 26 | pic_param->pic_fields.bits.transquant_bypass_enabled_flag << 25 | seq_param->seq_fields.bits.amp_enabled_flag << 23 | @@ -577,6 +620,14 @@ 0 << 30 | minframesize); /* DW 18, min frame size units */ + if(IS_KBL(i965->intel.device_info)) + { + int i = 0; + + for(i = 0;i < 12;i++) + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); } @@ -723,6 +774,7 @@ struct intel_encoder_context *encoder_context, struct intel_batchbuffer *batch) { + struct i965_driver_data *i965 = i965_driver_data(ctx); VAEncSequenceParameterBufferHEVC *pSequenceParameter = (VAEncSequenceParameterBufferHEVC *)encode_state->seq_param_ext->buffer; int slice_type = slice_param->slice_type; @@ -754,9 +806,18 @@ } } - BEGIN_BCS_BATCH(batch, 9); + if(IS_KBL(i965->intel.device_info)) + { + BEGIN_BCS_BATCH(batch, 11); + + OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (11 - 2)); + } + else + { + BEGIN_BCS_BATCH(batch, 9); - OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (9 - 2)); + OUT_BCS_BATCH(batch, HCP_SLICE_STATE | (9 - 2)); + } OUT_BCS_BATCH(batch, slice_ver_pos << 16 | @@ -801,6 +862,12 @@ 0); /* Ignored for decoding */ OUT_BCS_BATCH(batch, 0); /* PAK-BSE data start offset */ + if(IS_KBL(i965->intel.device_info)) + { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); } @@ -1097,8 +1164,12 @@ int cu_count_in_lcu, unsigned int split_coding_unit_flag, struct intel_batchbuffer *batch) { + struct i965_driver_data *i965 = i965_driver_data(ctx); int len_in_dwords = 3; + if(IS_KBL(i965->intel.device_info)) + len_in_dwords = 5; + if (batch == NULL) batch = encoder_context->base.batch; @@ -1112,6 +1183,12 @@ OUT_BCS_BATCH(batch, (lcu_y << 16) | lcu_x); /* LCU for Y*/ + if(IS_KBL(i965->intel.device_info)) + { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); return len_in_dwords; @@ -1610,6 +1687,8 @@ int cu_index = 0; int inter_rdo, intra_rdo; int qp; + int drop_cu_row_in_last_mb = 0; + int drop_cu_column_in_last_mb = 0; if (log2_ctb_size == 5) num_cu_record = 16; else if (log2_ctb_size == 4) num_cu_record = 4; @@ -1674,10 +1753,29 @@ int last_ctb = (i_ctb == (pSliceParameter->slice_segment_address + pSliceParameter->num_ctu_in_slice - 1)); int ctb_height_in_mb_internal = ctb_width_in_mb; int ctb_width_in_mb_internal = ctb_width_in_mb; + int max_cu_num_in_mb = 4; + ctb_x = i_ctb % width_in_ctb; ctb_y = i_ctb / width_in_ctb; - if(ctb_y == (height_in_ctb - 1) && row_pad_flag) ctb_height_in_mb_internal = 1; - if(ctb_x == (width_in_ctb - 1) && col_pad_flag) ctb_width_in_mb_internal = 1; + + drop_cu_row_in_last_mb = 0; + drop_cu_column_in_last_mb = 0; + + if(ctb_y == (height_in_ctb - 1) && row_pad_flag) + { + ctb_height_in_mb_internal = (pSequenceParameter->pic_height_in_luma_samples - (ctb_y * ctb_size) + 15)/16; + + if((log2_cu_size == 3) && (pSequenceParameter->pic_height_in_luma_samples % 16)) + drop_cu_row_in_last_mb = (16 - (pSequenceParameter->pic_height_in_luma_samples % 16))>>log2_cu_size; + } + + if(ctb_x == (width_in_ctb - 1) && col_pad_flag) + { + ctb_width_in_mb_internal = (pSequenceParameter->pic_width_in_luma_samples - (ctb_x * ctb_size) + 15) / 16; + + if((log2_cu_size == 3) && (pSequenceParameter->pic_width_in_luma_samples % 16)) + drop_cu_column_in_last_mb = (16 - (pSequenceParameter->pic_width_in_luma_samples % 16))>>log2_cu_size; + } mb_x = 0; mb_y = 0; @@ -1692,6 +1790,13 @@ mb_addr = macroblock_address + mb_y * width_in_mbs ; for (mb_x = 0; mb_x < ctb_width_in_mb_internal; mb_x++) { + max_cu_num_in_mb = 4; + if(drop_cu_row_in_last_mb && (mb_y == ctb_height_in_mb_internal - 1)) + max_cu_num_in_mb /= 2; + + if(drop_cu_column_in_last_mb && (mb_x == ctb_width_in_mb_internal - 1)) + max_cu_num_in_mb /= 2; + /* get the mb info from the vme out */ msg = (unsigned int *)(msg_ptr + mb_addr * vme_context->vme_output.size_block); @@ -1702,7 +1807,23 @@ if (is_intra || intra_rdo < inter_rdo) { /* fill intra cu */ tmp_mb_mode = (msg[0] & AVC_INTRA_MODE_MASK) >> 4; - if (tmp_mb_mode == AVC_INTRA_16X16) { + if(max_cu_num_in_mb < 4){ + if(tmp_mb_mode == AVC_INTRA_16X16) + { + msg[0] = (msg[0] & !AVC_INTRA_MODE_MASK) | (AVC_INTRA_8X8<<4); + tmp_mb_mode = AVC_INTRA_8X8; + } + + gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0); + if(--max_cu_num_in_mb > 0) + gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,2); + + if(ctb_width_in_mb == 2) + split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16); + else if(ctb_width_in_mb == 1) + split_coding_unit_flag |= 0x1 << 20; + } + else if(tmp_mb_mode == AVC_INTRA_16X16) { gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0); } else { // for 4x4 to use 8x8 replace gen9_hcpe_hevc_fill_indirect_cu_intra(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0); @@ -1718,7 +1839,23 @@ msg += AVC_INTER_MSG_OFFSET; /* fill inter cu */ tmp_mb_mode = msg[0] & AVC_INTER_MODE_MASK; - if (tmp_mb_mode == AVC_INTER_8X8){ + if(max_cu_num_in_mb < 4) + { + if(tmp_mb_mode != AVC_INTER_8X8) + { + msg[0] = (msg[0] & !AVC_INTER_MODE_MASK) | AVC_INTER_8X8; + tmp_mb_mode = AVC_INTER_8X8; + } + gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0); + if(--max_cu_num_in_mb > 0) + gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,1); + + if(ctb_width_in_mb == 2) + split_coding_unit_flag |= 0x1 << (mb_x + mb_y * ctb_width_in_mb + 16); + else if(ctb_width_in_mb == 1) + split_coding_unit_flag |= 0x1 << 20; + } + else if (tmp_mb_mode == AVC_INTER_8X8){ gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,0); gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,1); gen9_hcpe_hevc_fill_indirect_cu_inter(ctx, encode_state, encoder_context, qp, msg, ctb_x, ctb_y, mb_x, mb_y, ctb_width_in_mb, width_in_ctb, num_cu_record, slice_type,cu_index++,2); @@ -2074,7 +2211,7 @@ int width_in_mbs = (pSequenceParameter->pic_width_in_luma_samples + ctb_size - 1) / ctb_size; int height_in_mbs = (pSequenceParameter->pic_height_in_luma_samples + ctb_size - 1) / ctb_size; - float fps = pSequenceParameter->vui_time_scale * 0.5 / pSequenceParameter->vui_num_units_in_tick ; + float fps = pSequenceParameter->vui_time_scale / pSequenceParameter->vui_num_units_in_tick ; double bitrate = pSequenceParameter->bits_per_second * 1.0; int inter_mb_size = bitrate * 1.0 / (fps + 4.0) / width_in_mbs / height_in_mbs; int intra_mb_size = inter_mb_size * 5.0; @@ -2122,7 +2259,7 @@ VAEncMiscParameterBuffer* pMiscParamHRD = NULL; double bitrate = pSequenceParameter->bits_per_second * 1.0; - double framerate = (double)pSequenceParameter->vui_time_scale / (2 * (double)pSequenceParameter->vui_num_units_in_tick); + double framerate = (double)pSequenceParameter->vui_time_scale / (double)pSequenceParameter->vui_num_units_in_tick; int inum = 1, pnum = 0, bnum = 0; /* Gop structure: number of I, P, B frames in the Gop. */ int intra_period = pSequenceParameter->intra_period; int ip_period = pSequenceParameter->ip_period; @@ -2441,7 +2578,7 @@ cur_bitrate = pSequenceParameter->bits_per_second; cur_fps = (double)pSequenceParameter->vui_time_scale / - (2 * (double)pSequenceParameter->vui_num_units_in_tick); + (double)pSequenceParameter->vui_num_units_in_tick; if ((cur_bitrate == mfc_context->brc.saved_bps) && (cur_fps == mfc_context->brc.saved_fps) && diff -Nru intel-vaapi-driver-1.6.2/src/gen9_mfd.c intel-vaapi-driver-1.7.1/src/gen9_mfd.c --- intel-vaapi-driver-1.6.2/src/gen9_mfd.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_mfd.c 2016-06-21 01:35:12.000000000 +0000 @@ -189,13 +189,23 @@ int codec, struct gen9_hcpd_context *gen9_hcpd_context) { + struct i965_driver_data *i965 = i965_driver_data(ctx); struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch; assert((codec == HCP_CODEC_HEVC) || (codec == HCP_CODEC_VP9)); - BEGIN_BCS_BATCH(batch, 4); + if(IS_KBL(i965->intel.device_info)) + { + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2)); + } + else + { + BEGIN_BCS_BATCH(batch, 4); - OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2)); + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (4 - 2)); + } OUT_BCS_BATCH(batch, (codec << 5) | (0 << 3) | /* disable Pic Status / Error Report */ @@ -203,6 +213,16 @@ OUT_BCS_BATCH(batch, 0); OUT_BCS_BATCH(batch, 0); + if(IS_KBL(i965->intel.device_info)) + { + if(codec == HCP_CODEC_VP9) + OUT_BCS_BATCH(batch, 1<<6); + else + OUT_BCS_BATCH(batch, 0); + + OUT_BCS_BATCH(batch, 0); + } + ADVANCE_BCS_BATCH(batch); } @@ -982,23 +1002,44 @@ #define VP9_PROB_BUFFER_RESTORED_SECNE_2 2 #define VP9_PROB_BUFFER_RESTORED_SECNE_MAX (VP9_PROB_BUFFER_RESTORED_SECNE_2 + 1) -static void vp9_update_segmentId_buffer(VADriverContextP ctx, +#define ALLOC_MV_BUFFER(gen_buffer, string, size,width,height) \ + do { \ + dri_bo_unreference(gen_buffer->bo); \ + gen_buffer->bo = dri_bo_alloc(i965->intel.bufmgr, \ + string, \ + size, \ + 0x1000); \ + assert(gen_buffer->bo); \ + gen_buffer->frame_width = width ; \ + gen_buffer->frame_height = height; \ + } while (0) + +static void +vp9_update_segmentId_buffer(VADriverContextP ctx, struct decode_state *decode_state, - struct gen9_hcpd_context *gen9_hcpd_context, uint8_t isScaling) + struct gen9_hcpd_context *gen9_hcpd_context) { + struct i965_driver_data *i965 = i965_driver_data(ctx); VADecPictureParameterBufferVP9 *pic_param; + int size = 0; + int is_scaling = 0; assert(decode_state->pic_param && decode_state->pic_param->buffer); pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; - int size = 0; + size = gen9_hcpd_context->picture_width_in_ctbs * gen9_hcpd_context->picture_height_in_ctbs * 1 ; + size <<= 6; + if (gen9_hcpd_context->vp9_segment_id_buffer.bo == NULL || pic_param->frame_width > gen9_hcpd_context->last_frame.frame_width || pic_param->frame_height > gen9_hcpd_context->last_frame.frame_height) + { + ALLOC_GEN_BUFFER((&gen9_hcpd_context->vp9_segment_id_buffer), "vp9 segment id buffer", size); + } + + is_scaling = (pic_param->frame_width != gen9_hcpd_context->last_frame.frame_width) || (pic_param->frame_height != gen9_hcpd_context->last_frame.frame_height); if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) || pic_param->pic_fields.bits.error_resilient_mode || - pic_param->pic_fields.bits.intra_only || isScaling) { + pic_param->pic_fields.bits.intra_only || is_scaling) { - size = (gen9_hcpd_context->picture_width_in_min_cb_minus1+2)*(gen9_hcpd_context->picture_height_in_min_cb_minus1 + 2) * 1; - size<<=6; //VP9 Segment ID buffer needs to be zero dri_bo_map(gen9_hcpd_context->vp9_segment_id_buffer.bo,1); memset((unsigned char *)gen9_hcpd_context->vp9_segment_id_buffer.bo->virtual,0, size); @@ -1007,6 +1048,31 @@ } static void +vp9_update_mv_temporal_buffer(VADriverContextP ctx, + struct decode_state *decode_state, + struct gen9_hcpd_context *gen9_hcpd_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + VADecPictureParameterBufferVP9 *pic_param; + int size = 0; + + assert(decode_state->pic_param && decode_state->pic_param->buffer); + pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; + + size = gen9_hcpd_context->picture_width_in_ctbs * gen9_hcpd_context->picture_height_in_ctbs * 9 ; + size <<= 6; //CL aligned + if (gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo == NULL || pic_param->frame_width > gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width || pic_param->frame_height > gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height) + { + ALLOC_MV_BUFFER((&gen9_hcpd_context->vp9_mv_temporal_buffer_curr), "vp9 curr mv temporal buffer", size,pic_param->frame_width,pic_param->frame_height); + } + if (gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo == NULL) + { + ALLOC_MV_BUFFER((&gen9_hcpd_context->vp9_mv_temporal_buffer_last), "vp9 last mv temporal buffer", size,pic_param->frame_width,pic_param->frame_height); + } + +} + +static void vp9_gen_default_probabilities(VADriverContextP ctx, struct gen9_hcpd_context *gen9_hcpd_context) { int i = 0; @@ -1060,8 +1126,6 @@ { gen9_hcpd_context->vp9_frame_ctx[i] = gen9_hcpd_context->vp9_fc_inter_default; } - gen9_hcpd_context->vp9_fc = gen9_hcpd_context->vp9_fc_inter_default; - } static void @@ -1071,66 +1135,12 @@ { VADecPictureParameterBufferVP9 *pic_param; int i = 0; - uint8_t is_saved = VP9_PROB_BUFFER_SAVED_NO; - uint8_t is_restored = VP9_PROB_BUFFER_RESTORED_NO; - - uint8_t last_frame_type = gen9_hcpd_context->last_frame.frame_type; - uint8_t temp_frame_ctx_id; assert(decode_state->pic_param && decode_state->pic_param->buffer); pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; - temp_frame_ctx_id = pic_param->pic_fields.bits.frame_context_idx; - - if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) - { - gen9_hcpd_context->vp9_fc = gen9_hcpd_context->vp9_fc_key_default; - gen9_hcpd_context->last_frame.prob_buffer_saved_flag = VP9_PROB_BUFFER_SAVED_NO; - gen9_hcpd_context->last_frame.prob_buffer_restored_flag = VP9_PROB_BUFFER_RESTORED_NO; - - }else - { - gen9_hcpd_context->vp9_fc = gen9_hcpd_context->vp9_fc_inter_default; - } - - // restore? - if(gen9_hcpd_context->last_frame.prob_buffer_saved_flag == VP9_PROB_BUFFER_SAVED_SECNE_1) - { - if((pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME)) - { - //save the inter frame values for the 343 bytes - //Update the 343 bytes of the buffer with Intra values - is_restored = VP9_PROB_BUFFER_RESTORED_SECNE_1; - } - }else if(gen9_hcpd_context->last_frame.prob_buffer_saved_flag == VP9_PROB_BUFFER_SAVED_SECNE_2) - { - if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||pic_param->pic_fields.bits.intra_only|pic_param->pic_fields.bits.error_resilient_mode) - { - temp_frame_ctx_id = 0; - } - - if((pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME) && - (temp_frame_ctx_id == 0)) - { - - is_restored = VP9_PROB_BUFFER_RESTORED_SECNE_2; - } - } - if(is_restored > VP9_PROB_BUFFER_RESTORED_NO && is_restored < VP9_PROB_BUFFER_RESTORED_SECNE_MAX) - { - memcpy(gen9_hcpd_context->vp9_frame_ctx[gen9_hcpd_context->last_frame.frame_context_idx].inter_mode_probs,gen9_hcpd_context->vp9_saved_fc.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - } - - if((gen9_hcpd_context->last_frame.prob_buffer_restored_flag == VP9_PROB_BUFFER_RESTORED_SECNE_MAX) || - (gen9_hcpd_context->last_frame.refresh_frame_context && last_frame_type == HCP_VP9_KEY_FRAME && (pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME))) - { - if(pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME) - { - memcpy(gen9_hcpd_context->vp9_frame_ctx[gen9_hcpd_context->last_frame.frame_context_idx].inter_mode_probs,gen9_hcpd_context->vp9_fc_inter_default.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - } - } //first part buffer update: Case 1)Reset all 4 probablity buffers - if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||pic_param->pic_fields.bits.intra_only|pic_param->pic_fields.bits.error_resilient_mode) + if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) ||pic_param->pic_fields.bits.intra_only||pic_param->pic_fields.bits.error_resilient_mode) { if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) || (pic_param->pic_fields.bits.reset_frame_context == 3)|| @@ -1140,6 +1150,9 @@ for(i = 0; i < FRAME_CONTEXTS; i++) { memcpy(&gen9_hcpd_context->vp9_frame_ctx[i],&gen9_hcpd_context->vp9_fc_inter_default,VP9_PROB_BUFFER_FIRST_PART_SIZE); + + vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_tree_probs, default_seg_tree_probs); + vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_pred_probs, default_seg_pred_probs); } }else if(pic_param->pic_fields.bits.reset_frame_context == 2&&pic_param->pic_fields.bits.intra_only) { @@ -1148,46 +1161,6 @@ pic_param->pic_fields.bits.frame_context_idx = 0; } - //Full buffer update: Case 2.2)Reset only segmentation prob buffer - if(pic_param->pic_fields.bits.segmentation_enabled && - pic_param->pic_fields.bits.segmentation_update_map) - { - for(i = 0; i < FRAME_CONTEXTS; i++) - { - //Reset only the segementation probability buffers - vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_tree_probs, default_seg_tree_probs); - vp9_copy(gen9_hcpd_context->vp9_frame_ctx[i].seg_pred_probs, default_seg_pred_probs); - } - } - - //update vp9_fc according to frame_context_id - { - gen9_hcpd_context->vp9_fc = gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx]; - } - //Partial Buffer Update - //Case 1) Update top 3 probabilities only - if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) - { - memcpy(gen9_hcpd_context->vp9_fc.inter_mode_probs,gen9_hcpd_context->vp9_fc_key_default.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - if((!pic_param->pic_fields.bits.segmentation_enabled || - !pic_param->pic_fields.bits.segmentation_update_map)) { - //Update with key frame default probability values for only - //tx_probs, coef_probs, and the next 343 bytes - memcpy(&gen9_hcpd_context->vp9_fc,&gen9_hcpd_context->vp9_fc_key_default,VP9_PROB_BUFFER_FIRST_PART_SIZE); - } - } - //Case 2) Update 343 bytes for first inter following key frame - if( last_frame_type == HCP_VP9_KEY_FRAME && - (pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME)) { - //Update with inter frame default values for the 343 bytes - memcpy(gen9_hcpd_context->vp9_fc.inter_mode_probs,gen9_hcpd_context->vp9_fc_inter_default.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - } - //Case 2.1) Update 343 bytes for first intra-inly frame following key frame - if( last_frame_type == HCP_VP9_KEY_FRAME && - pic_param->pic_fields.bits.intra_only) { - //Update with inter frame default values for the 343 bytes - memcpy(gen9_hcpd_context->vp9_fc.inter_mode_probs,gen9_hcpd_context->vp9_fc_key_default.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - } //Case 3) Update only segment probabilities if((pic_param->pic_fields.bits.segmentation_enabled && pic_param->pic_fields.bits.segmentation_update_map)) @@ -1195,68 +1168,34 @@ //Update seg_tree_probs and seg_pred_probs accordingly for (i=0; ivp9_fc.seg_tree_probs[i] = pic_param->mb_segment_tree_probs[i]; + gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx].seg_tree_probs[i] = pic_param->mb_segment_tree_probs[i]; } for (i=0; ivp9_fc.seg_pred_probs[i] = pic_param->segment_pred_probs[i]; + gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx].seg_pred_probs[i] = pic_param->segment_pred_probs[i]; } } - //Case 4) Considering Intra only frame in the middle of Inter frames - if((pic_param->pic_fields.bits.intra_only && - (pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME)&& - (pic_param->pic_fields.bits.reset_frame_context==0 || - pic_param->pic_fields.bits.reset_frame_context==1|| - pic_param->pic_fields.bits.reset_frame_context==2|| - pic_param->pic_fields.bits.reset_frame_context==3)) && - (last_frame_type == HCP_VP9_INTER_FRAME)) - { - //save the inter frame values for the 343 bytes - //Update the 343 bytes of the buffer with Intra values - is_saved = VP9_PROB_BUFFER_SAVED_SECNE_1; - } - //Case 5) Considering Intra only frame among 3 Inter frames - if((pic_param->pic_fields.bits.intra_only && - (pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME)&& - (pic_param->pic_fields.bits.reset_frame_context==2 || - pic_param->pic_fields.bits.frame_context_idx==1)) && - ((last_frame_type == HCP_VP9_INTER_FRAME) && - (gen9_hcpd_context->last_frame.frame_context_idx==0))) - { - //save the inter frame values for the 343 bytes - //Update the 343 bytes of the buffer with Intra values - is_saved = VP9_PROB_BUFFER_SAVED_SECNE_2; - } - - if(is_saved > VP9_PROB_BUFFER_SAVED_NO) - { - gen9_hcpd_context->vp9_saved_fc = gen9_hcpd_context->vp9_fc; - memcpy(gen9_hcpd_context->vp9_fc.inter_mode_probs,gen9_hcpd_context->vp9_fc_key_default.inter_mode_probs,VP9_PROB_BUFFER_KEY_INTER_SIZE); - }else if(pic_param->pic_fields.bits.intra_only) + //update vp9_fc according to frame_context_id { - is_restored = VP9_PROB_BUFFER_RESTORED_SECNE_MAX; + void *pfc = (void *)&gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx]; + void *pprob = NULL; - } + dri_bo_map(gen9_hcpd_context->vp9_probability_buffer.bo,1); - // update after the restored - if(gen9_hcpd_context->last_frame.prob_buffer_restored_flag == VP9_PROB_BUFFER_RESTORED_SECNE_2) - { - if((pic_param->pic_fields.bits.frame_type == HCP_VP9_INTER_FRAME) && - pic_param->pic_fields.bits.frame_context_idx==1) - { - memcpy(&gen9_hcpd_context->vp9_fc,&gen9_hcpd_context->vp9_fc_inter_default,VP9_PROB_BUFFER_FIRST_PART_SIZE); + pprob = (void *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual; + memcpy(pprob,pfc,2048); + //only update 343bytes for key or intra_only frame + if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME || + pic_param->pic_fields.bits.intra_only) + { + memcpy(pprob + VP9_PROB_BUFFER_FIRST_PART_SIZE - VP9_PROB_BUFFER_KEY_INTER_SIZE + , gen9_hcpd_context->vp9_fc_key_default.inter_mode_probs + , VP9_PROB_BUFFER_KEY_INTER_SIZE); } - } - { - dri_bo_map(gen9_hcpd_context->vp9_probability_buffer.bo,1); - memcpy((unsigned char *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual,&gen9_hcpd_context->vp9_fc,2048); dri_bo_unmap(gen9_hcpd_context->vp9_probability_buffer.bo); } - // save the flag in order to restore or update prob buffer - gen9_hcpd_context->last_frame.prob_buffer_saved_flag = is_saved; - gen9_hcpd_context->last_frame.prob_buffer_restored_flag = is_restored; } static void @@ -1265,9 +1204,7 @@ struct object_surface *obj_surface, struct gen9_hcpd_context *gen9_hcpd_context) { - struct i965_driver_data *i965 = i965_driver_data(ctx); GenVP9Surface *gen9_vp9_surface; - uint32_t size=0; if (!obj_surface) return; @@ -1277,20 +1214,11 @@ if (!gen9_vp9_surface) { gen9_vp9_surface = calloc(sizeof(GenVP9Surface), 1); + assert(gen9_vp9_surface); gen9_vp9_surface->base.frame_store_id = -1; obj_surface->private_data = gen9_vp9_surface; } - //Super block size in VP9 is 64x64, size in SBs - size = gen9_hcpd_context->picture_width_in_ctbs * gen9_hcpd_context->picture_height_in_ctbs * 9 ; - size<<=6; //CL aligned - - if (gen9_vp9_surface->motion_vector_temporal_bo == NULL) { - gen9_vp9_surface->motion_vector_temporal_bo = dri_bo_alloc(i965->intel.bufmgr, - "current motion vector temporal buffer", - size, - 0x1000); - } gen9_vp9_surface->frame_width = pic_param->frame_width; gen9_vp9_surface->frame_height = pic_param->frame_height; @@ -1306,6 +1234,7 @@ struct object_surface *obj_surface; uint32_t size; int width_in_mbs=0, height_in_mbs=0; + int bit_depth_minus8 = 0; assert(decode_state->pic_param && decode_state->pic_param->buffer); pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; @@ -1317,6 +1246,23 @@ assert(width_in_mbs > 0 && width_in_mbs <= 256); /* 4K */ assert(height_in_mbs > 0 && height_in_mbs <= 256); + if(!(i965->codec_info->vp9_dec_profiles & (1U<profile))) + return VA_STATUS_ERROR_UNSUPPORTED_PROFILE; + + if(pic_param->profile >= 2) + { + if(pic_param->bit_depth >= 8) + bit_depth_minus8 = pic_param->bit_depth - 8; + + if(bit_depth_minus8 == 2) + { + if(!(i965->codec_info->vp9_dec_chroma_formats & VA_RT_FORMAT_YUV420_10BPP)) + return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; + } + else if((bit_depth_minus8 > 2) || (bit_depth_minus8 == 1) || (bit_depth_minus8 < 0)) + return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; + } + //Update the frame store buffers with the reference frames information intel_update_vp9_frame_store_index(ctx, decode_state, @@ -1346,12 +1292,18 @@ gen9_hcpd_init_vp9_surface(ctx, pic_param, obj_surface, gen9_hcpd_context); - size = gen9_hcpd_context->picture_width_in_ctbs*18; //num_width_in_SB * 18 + if(pic_param->profile >= 2) + size = gen9_hcpd_context->picture_width_in_ctbs*36; //num_width_in_SB * 36 + else + size = gen9_hcpd_context->picture_width_in_ctbs*18; //num_width_in_SB * 18 size<<=6; ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_line_buffer), "line buffer", size); ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_line_buffer), "tile line buffer", size); - size = gen9_hcpd_context->picture_height_in_ctbs*17; //num_height_in_SB * 17 + if(pic_param->profile >= 2) + size = gen9_hcpd_context->picture_height_in_ctbs*34; //num_height_in_SB * 17 + else + size = gen9_hcpd_context->picture_height_in_ctbs*17; //num_height_in_SB * 17 size<<=6; ALLOC_GEN_BUFFER((&gen9_hcpd_context->deblocking_filter_tile_column_buffer), "tile column buffer", size); @@ -1373,10 +1325,6 @@ size<<=6; ALLOC_GEN_BUFFER((&gen9_hcpd_context->vp9_probability_buffer), "vp9 probability buffer", size); - size = (gen9_hcpd_context->picture_width_in_min_cb_minus1+2)*(gen9_hcpd_context->picture_height_in_min_cb_minus1 + 2) * 1; - size<<=6; - ALLOC_GEN_BUFFER((&gen9_hcpd_context->vp9_segment_id_buffer), "vp9 segment id buffer", size); - gen9_hcpd_context->first_inter_slice_collocated_ref_idx = 0; gen9_hcpd_context->first_inter_slice_collocated_from_l0_flag = 0; gen9_hcpd_context->first_inter_slice_valid = 0; @@ -1406,7 +1354,7 @@ (0 << 28) | /* surface id */ (obj_surface->width - 1)); /* pitch - 1 */ OUT_BCS_BATCH(batch, - (SURFACE_FORMAT_PLANAR_420_8 << 28) | + (((obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) | y_cb_offset); ADVANCE_BCS_BATCH(batch); @@ -1424,7 +1372,7 @@ ((i + 2) << 28) | /* surface id */ (obj_surface->width - 1)); /* pitch - 1 */ OUT_BCS_BATCH(batch, - (SURFACE_FORMAT_PLANAR_420_8 << 28) | + (((obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) | obj_surface->y_cb_offset); ADVANCE_BCS_BATCH(batch); }else @@ -1436,7 +1384,7 @@ ((i + 2) << 28) | /* surface id */ (tmp_obj_surface->width - 1)); /* pitch - 1 */ OUT_BCS_BATCH(batch, - (SURFACE_FORMAT_PLANAR_420_8 << 28) | + (((tmp_obj_surface->fourcc == VA_FOURCC_P010) ? SURFACE_FORMAT_P010: SURFACE_FORMAT_PLANAR_420_8) << 28) | tmp_obj_surface->y_cb_offset); ADVANCE_BCS_BATCH(batch); } @@ -1450,7 +1398,6 @@ { struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch; struct object_surface *obj_surface; - GenVP9Surface *gen9_vp9_surface; int i=0; BEGIN_BCS_BATCH(batch, 95); @@ -1459,8 +1406,6 @@ obj_surface = decode_state->render_object; assert(obj_surface && obj_surface->bo); - gen9_vp9_surface = obj_surface->private_data; - assert(gen9_vp9_surface && gen9_vp9_surface->motion_vector_temporal_bo); OUT_BUFFER_MA_TARGET(obj_surface->bo); /* DW 1..3 */ OUT_BUFFER_MA_TARGET(gen9_hcpd_context->deblocking_filter_line_buffer.bo);/* DW 4..6 */ @@ -1472,7 +1417,7 @@ OUT_BUFFER_MA_TARGET(NULL); /* DW 22..24, ignore for VP9 */ OUT_BUFFER_MA_TARGET(NULL); /* DW 25..27, ignore for VP9 */ OUT_BUFFER_MA_TARGET(NULL); /* DW 28..30, ignore for VP9 */ - OUT_BUFFER_MA_TARGET(gen9_vp9_surface->motion_vector_temporal_bo); /* DW 31..33 */ + OUT_BUFFER_MA_TARGET(gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo); /* DW 31..33 */ OUT_BUFFER_MA_TARGET(NULL); /* DW 34..36, reserved */ @@ -1502,7 +1447,7 @@ /* DW 66..81 - for 8 Collocated motion vectors */ for (i = 0; i < 1; i++) { - OUT_BUFFER_NMA_REFERENCE(gen9_hcpd_context->last_frame.mv_temporal_buffer_bo); + OUT_BUFFER_NMA_REFERENCE(gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo); } for (; i < ARRAY_ELEMS(gen9_hcpd_context->reference_surfaces); i++) { @@ -1517,7 +1462,6 @@ OUT_BUFFER_MA_TARGET(gen9_hcpd_context->hvd_tile_rowstore_buffer.bo);/* DW 92..94, VP9 HVD Tile Rowstore buffer */ ADVANCE_BCS_BATCH(batch); - gen9_hcpd_context->last_frame.mv_temporal_buffer_bo = gen9_vp9_surface->motion_vector_temporal_bo; } static inline int @@ -1544,6 +1488,8 @@ uint16_t fwidth = 64; uint16_t fheight = 64; int i; + int bit_depth_minus8 = 0; + #define LEN_COMMAND_OWN 12 assert(decode_state->pic_param && decode_state->pic_param->buffer); pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; @@ -1601,6 +1547,12 @@ fwidth = (fwidth > frame_width_in_pixel)?frame_width_in_pixel:fwidth; fheight = (fheight > frame_height_in_pixel)?frame_height_in_pixel:fheight; + if(pic_param->profile >= 2) + { + if(pic_param->bit_depth >= 8) + bit_depth_minus8 = pic_param->bit_depth - 8; + } + BEGIN_BCS_BATCH(batch, LEN_COMMAND_OWN); OUT_BCS_BATCH(batch, HCP_VP9_PIC_STATE | (LEN_COMMAND_OWN - 2)); @@ -1633,7 +1585,9 @@ adapt_probabilities_flag << 1 | pic_param->pic_fields.bits.frame_type <<0); /* DW 2 */ OUT_BCS_BATCH(batch, - HCP_VP9_PROFILE0 << 28 | /* Profile 0 only supports 8 bit 420 only */ + pic_param->profile << 28 | + bit_depth_minus8 << 24 | + 0 << 22 | /* only support 4:2:0 */ pic_param->log2_tile_rows << 8 | pic_param->log2_tile_columns <<0); /* DW 3 */ // resolution change case @@ -1710,24 +1664,39 @@ { struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch; + int segment_ref = seg_param->segment_flags.fields.segment_reference; + + if((pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME) + || (pic_param->pic_fields.bits.intra_only)) + segment_ref = 0; + BEGIN_BCS_BATCH(batch, 7); OUT_BCS_BATCH(batch, HCP_VP9_SEGMENT_STATE | (7 - 2)); OUT_BCS_BATCH(batch, seg_id << 0); /* DW 1 - SegmentID */ OUT_BCS_BATCH(batch, seg_param->segment_flags.fields.segment_reference_enabled << 3 | - seg_param->segment_flags.fields.segment_reference << 1 | + segment_ref << 1 | seg_param->segment_flags.fields.segment_reference_skipped <<0 ); /* DW 2 */ - OUT_BCS_BATCH(batch, - seg_param->filter_level[1][1] << 24 | //FilterLevelRef1Mode1 - seg_param->filter_level[1][0] << 16 | //FilterLevelRef1Mode0 - seg_param->filter_level[0][1] << 8 | //FilterLevelRef0Mode1 - seg_param->filter_level[0][0] << 0 ); //FilterLevelRef0Mode0 /* DW 3 */ - OUT_BCS_BATCH(batch, - seg_param->filter_level[3][1] << 24 | //FilterLevelRef3Mode1 - seg_param->filter_level[3][0] << 16 | //FilterLevelRef3Mode0 - seg_param->filter_level[2][1] << 8 | //FilterLevelRef2Mode1 - seg_param->filter_level[2][0] << 0 ); //FilterLevelRef2Mode0 /* DW 4 */ + if(pic_param->filter_level) + { + OUT_BCS_BATCH(batch, + seg_param->filter_level[1][1] << 24 | //FilterLevelRef1Mode1 + seg_param->filter_level[1][0] << 16 | //FilterLevelRef1Mode0 + seg_param->filter_level[0][1] << 8 | //FilterLevelRef0Mode1 + seg_param->filter_level[0][0] << 0 ); //FilterLevelRef0Mode0 /* DW 3 */ + OUT_BCS_BATCH(batch, + seg_param->filter_level[3][1] << 24 | //FilterLevelRef3Mode1 + seg_param->filter_level[3][0] << 16 | //FilterLevelRef3Mode0 + seg_param->filter_level[2][1] << 8 | //FilterLevelRef2Mode1 + seg_param->filter_level[2][0] << 0 ); //FilterLevelRef2Mode0 /* DW 4 */ + }else + { + OUT_BCS_BATCH(batch, + 0 ); /* DW 3 */ + OUT_BCS_BATCH(batch, + 0 ); /* DW 4 */ + } OUT_BCS_BATCH(batch, seg_param->luma_ac_quant_scale << 16 | seg_param->luma_dc_quant_scale << 0 ); /* DW 5 */ @@ -1765,39 +1734,35 @@ struct decode_state *decode_state, struct gen9_hcpd_context *gen9_hcpd_context) { - VAStatus vaStatus; + VAStatus vaStatus = VA_STATUS_SUCCESS; struct i965_driver_data *i965 = i965_driver_data(ctx); struct intel_batchbuffer *batch = gen9_hcpd_context->base.batch; VADecPictureParameterBufferVP9 *pic_param; VASliceParameterBufferVP9 *slice_param; dri_bo *slice_data_bo; - int i = 0, num_segments=0, isScaling=0; - struct object_surface *obj_surface; - GenVP9Surface *gen9_vp9_surface; - vaStatus = gen9_hcpd_vp9_decode_init(ctx, decode_state, gen9_hcpd_context); - - if (vaStatus != VA_STATUS_SUCCESS) - goto out; + dri_bo *tmp_bo; + uint16_t tmp; + int i = 0, num_segments=0; assert(decode_state->pic_param && decode_state->pic_param->buffer); + assert(decode_state->slice_params && decode_state->slice_params[0]->buffer); + slice_param = (VASliceParameterBufferVP9 *)decode_state->slice_params[0]->buffer; pic_param = (VADecPictureParameterBufferVP9 *)decode_state->pic_param->buffer; - //****And set the isScaling value accordingly****** - isScaling = 0; - for(i = 0; i < 3; i++) + if(slice_param->slice_data_size == 1) { - obj_surface = gen9_hcpd_context->reference_surfaces[i].obj_surface; - gen9_vp9_surface = NULL; - if (obj_surface && obj_surface->private_data) - { - gen9_vp9_surface = obj_surface->private_data; - isScaling |= (gen9_vp9_surface->frame_width == pic_param->frame_width && - gen9_vp9_surface->frame_height == pic_param->frame_height)? 0:1; - } + goto out; } + vaStatus = gen9_hcpd_vp9_decode_init(ctx, decode_state, gen9_hcpd_context); + + if (vaStatus != VA_STATUS_SUCCESS) + goto out; + //Update segment id buffer if needed - vp9_update_segmentId_buffer(ctx, decode_state, gen9_hcpd_context, isScaling); + vp9_update_segmentId_buffer(ctx, decode_state, gen9_hcpd_context); + //Update mv buffer if needed + vp9_update_mv_temporal_buffer(ctx, decode_state, gen9_hcpd_context); //Update probability buffer if needed vp9_update_probabilities(ctx, decode_state, gen9_hcpd_context); @@ -1812,8 +1777,6 @@ gen9_hcpd_vp9_surface_state(ctx, decode_state, gen9_hcpd_context); //Only one VASliceParameterBufferVP9 should be sent per frame - assert(decode_state->slice_params && decode_state->slice_params[0]->buffer); - slice_param = (VASliceParameterBufferVP9 *)decode_state->slice_params[0]->buffer; slice_data_bo = decode_state->slice_datas[0]->bo; gen9_hcpd_ind_obj_base_addr_state(ctx, slice_data_bo, gen9_hcpd_context); @@ -1835,6 +1798,9 @@ gen9_hcpd_vp9_bsd_object(ctx, pic_param, slice_param, gen9_hcpd_context); + intel_batchbuffer_end_atomic(batch); + intel_batchbuffer_flush(batch); + // keep track of the last frame status gen9_hcpd_context->last_frame.frame_width = pic_param->frame_width; gen9_hcpd_context->last_frame.frame_height = pic_param->frame_height; @@ -1844,20 +1810,39 @@ gen9_hcpd_context->last_frame.frame_context_idx = pic_param->pic_fields.bits.frame_context_idx; gen9_hcpd_context->last_frame.intra_only = pic_param->pic_fields.bits.intra_only; - // update prob buffer to vp9_fc; + // switch mv buffer + if(pic_param->pic_fields.bits.frame_type != HCP_VP9_KEY_FRAME) + { + tmp_bo = gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo; + gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo; + gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo = tmp_bo; + + tmp = gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_width; + gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_width = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width; + gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_width = tmp; + + tmp = gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_height; + gen9_hcpd_context->vp9_mv_temporal_buffer_last.frame_height = gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height; + gen9_hcpd_context->vp9_mv_temporal_buffer_curr.frame_height = tmp; - intel_batchbuffer_end_atomic(batch); - intel_batchbuffer_flush(batch); + } //update vp9_frame_ctx according to frame_context_id if (pic_param->pic_fields.bits.refresh_frame_context) { + void *pfc = (void *)&gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx]; + void *pprob = NULL; + //update vp9_fc to frame_context dri_bo_map(gen9_hcpd_context->vp9_probability_buffer.bo,1); - memcpy(&gen9_hcpd_context->vp9_fc,(unsigned char *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual,2048); - dri_bo_unmap(gen9_hcpd_context->vp9_probability_buffer.bo); - gen9_hcpd_context->vp9_frame_ctx[pic_param->pic_fields.bits.frame_context_idx] = gen9_hcpd_context->vp9_fc; + pprob = (void *)gen9_hcpd_context->vp9_probability_buffer.bo->virtual; + if(pic_param->pic_fields.bits.frame_type == HCP_VP9_KEY_FRAME|| + pic_param->pic_fields.bits.intra_only) + memcpy(pfc, pprob, VP9_PROB_BUFFER_FIRST_PART_SIZE - VP9_PROB_BUFFER_KEY_INTER_SIZE); + else + memcpy(pfc, pprob, VP9_PROB_BUFFER_FIRST_PART_SIZE); + dri_bo_unmap(gen9_hcpd_context->vp9_probability_buffer.bo); } out: @@ -1888,6 +1873,7 @@ vaStatus = gen9_hcpd_hevc_decode_picture(ctx, decode_state, gen9_hcpd_context); break; case VAProfileVP9Profile0: + case VAProfileVP9Profile2: vaStatus = gen9_hcpd_vp9_decode_picture(ctx, decode_state, gen9_hcpd_context); break; @@ -1919,6 +1905,8 @@ FREE_GEN_BUFFER((&gen9_hcpd_context->hvd_tile_rowstore_buffer)); FREE_GEN_BUFFER((&gen9_hcpd_context->vp9_probability_buffer)); FREE_GEN_BUFFER((&gen9_hcpd_context->vp9_segment_id_buffer)); + dri_bo_unreference(gen9_hcpd_context->vp9_mv_temporal_buffer_curr.bo); + dri_bo_unreference(gen9_hcpd_context->vp9_mv_temporal_buffer_last.bo); intel_batchbuffer_free(gen9_hcpd_context->base.batch); free(gen9_hcpd_context); @@ -1935,17 +1923,19 @@ gen9_hcpd_vp9_context_init(VADriverContextP ctx, struct gen9_hcpd_context *gen9_hcpd_context) { - int default_value = 255; gen9_hcpd_context->last_frame.frame_height = 0; gen9_hcpd_context->last_frame.show_frame = 0; gen9_hcpd_context->last_frame.frame_type = 0; - gen9_hcpd_context->last_frame.refresh_frame_context = default_value; - gen9_hcpd_context->last_frame.frame_context_idx = default_value; + gen9_hcpd_context->last_frame.refresh_frame_context = 0; + gen9_hcpd_context->last_frame.frame_context_idx = 0; gen9_hcpd_context->last_frame.intra_only = 0; gen9_hcpd_context->last_frame.prob_buffer_saved_flag = 0; gen9_hcpd_context->last_frame.prob_buffer_restored_flag = 0; - gen9_hcpd_context->last_frame.mv_temporal_buffer_bo = NULL; + + //Super block in VP9 is 64x64 + gen9_hcpd_context->ctb_size = 64; + gen9_hcpd_context->min_cb_size = 8; //Min block size is 8 vp9_gen_default_probabilities(ctx, gen9_hcpd_context); } @@ -1976,6 +1966,7 @@ gen9_hcpd_hevc_context_init(ctx, gen9_hcpd_context); break; case VAProfileVP9Profile0: + case VAProfileVP9Profile2: gen9_hcpd_vp9_context_init(ctx, gen9_hcpd_context); break; @@ -1991,7 +1982,8 @@ { if (obj_config->profile == VAProfileHEVCMain || obj_config->profile == VAProfileHEVCMain10 || - obj_config->profile == VAProfileVP9Profile0) { + obj_config->profile == VAProfileVP9Profile0 || + obj_config->profile == VAProfileVP9Profile2) { return gen9_hcpd_context_init(ctx, obj_config); } else { return gen8_dec_hw_context_init(ctx, obj_config); diff -Nru intel-vaapi-driver-1.6.2/src/gen9_mfd.h intel-vaapi-driver-1.7.1/src/gen9_mfd.h --- intel-vaapi-driver-1.6.2/src/gen9_mfd.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_mfd.h 2016-06-16 00:57:46.000000000 +0000 @@ -49,9 +49,15 @@ uint8_t intra_only; uint8_t prob_buffer_saved_flag; uint8_t prob_buffer_restored_flag; - dri_bo * mv_temporal_buffer_bo; }vp9_last_frame_status; +typedef struct vp9_mv_temporal_buffer +{ + dri_bo *bo; + uint16_t frame_width; + uint16_t frame_height; +}VP9_MV_BUFFER; + struct gen9_hcpd_context { struct hw_context base; @@ -84,6 +90,8 @@ GenBuffer hvd_tile_rowstore_buffer; GenBuffer vp9_probability_buffer; GenBuffer vp9_segment_id_buffer; + VP9_MV_BUFFER vp9_mv_temporal_buffer_curr; + VP9_MV_BUFFER vp9_mv_temporal_buffer_last; unsigned short first_inter_slice_collocated_ref_idx; unsigned short first_inter_slice_collocated_from_l0_flag; @@ -93,8 +101,6 @@ FRAME_CONTEXT vp9_frame_ctx[FRAME_CONTEXTS]; FRAME_CONTEXT vp9_fc_inter_default; FRAME_CONTEXT vp9_fc_key_default; - FRAME_CONTEXT vp9_fc; - FRAME_CONTEXT vp9_saved_fc; }; #endif /* GEN9_MFD_H */ diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vdenc.c intel-vaapi-driver-1.7.1/src/gen9_vdenc.c --- intel-vaapi-driver-1.6.2/src/gen9_vdenc.c 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vdenc.c 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,3778 @@ +/* + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Xiang Haihao + * + */ + +#include +#include +#include +#include +#include + +#include "intel_batchbuffer.h" +#include "i965_defines.h" +#include "i965_structs.h" +#include "i965_drv_video.h" +#include "i965_encoder.h" +#include "i965_encoder_utils.h" +#include "intel_media.h" +#include "gen9_vdenc.h" + +static const uint8_t buf_rate_adj_tab_i_lowdelay[72] = { + 0, 0, -8, -12, -16, -20, -28, -36, + 0, 0, -4, -8, -12, -16, -24, -32, + 4, 2, 0, -1, -3, -8, -16, -24, + 8, 4, 2, 0, -1, -4, -8, -16, + 20, 16, 4, 0, -1, -4, -8, -16, + 24, 20, 16, 8, 4, 0, -4, -8, + 28, 24, 20, 16, 8, 4, 0, -8, + 32, 24, 20, 16, 8, 4, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static const uint8_t buf_rate_adj_tab_p_lowdelay[72] = { + -8, -24, -32, -40, -44, -48, -52, -80, + -8, -16, -32, -40, -40, -44, -44, -56, + 0, 0, -12, -20, -24, -28, -32, -36, + 8, 4, 0, 0, -8, -16, -24, -32, + 32, 16, 8, 4, -4, -8, -16, -20, + 36, 24, 16, 8, 4, -2, -4, -8, + 40, 36, 24, 20, 16, 8, 0, -8, + 48, 40, 28, 24, 20, 12, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static const uint8_t buf_rate_adj_tab_b_lowdelay[72] = { + 0, -4, -8, -16, -24, -32, -40, -48, + 1, 0, -4, -8, -16, -24, -32, -40, + 4, 2, 0, -1, -3, -8, -16, -24, + 8, 4, 2, 0, -1, -4, -8, -16, + 20, 16, 4, 0, -1, -4, -8, -16, + 24, 20, 16, 8, 4, 0, -4, -8, + 28, 24, 20, 16, 8, 4, 0, -8, + 32, 24, 20, 16, 8, 4, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static const int8_t dist_qp_adj_tab_i_vbr[81] = { + +0, 0, 0, 0, 0, 3, 4, 6, 8, + +0, 0, 0, 0, 0, 2, 3, 5, 7, + -1, 0, 0, 0, 0, 2, 2, 4, 5, + -1, -1, 0, 0, 0, 1, 2, 2, 4, + -2, -2, -1, 0, 0, 0, 1, 2, 4, + -2, -2, -1, 0, 0, 0, 1, 2, 4, + -3, -2, -1, -1, 0, 0, 1, 2, 5, + -3, -2, -1, -1, 0, 0, 2, 4, 7, + -4, -3, -2, -1, 0, 1, 3, 5, 8, +}; + +static const int8_t dist_qp_adj_tab_p_vbr[81] = { + -1, 0, 0, 0, 0, 1, 1, 2, 3, + -1, -1, 0, 0, 0, 1, 1, 2, 3, + -2, -1, -1, 0, 0, 1, 1, 2, 3, + -3, -2, -2, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, +}; + +static const int8_t dist_qp_adj_tab_b_vbr[81] = { + +0, 0, 0, 0, 0, 2, 3, 3, 4, + +0, 0, 0, 0, 0, 2, 3, 3, 4, + -1, 0, 0, 0, 0, 2, 2, 3, 3, + -1, -1, 0, 0, 0, 1, 2, 2, 2, + -1, -1, -1, 0, 0, 0, 1, 2, 2, + -2, -1, -1, 0, 0, 0, 0, 1, 2, + -2, -1, -1, -1, 0, 0, 0, 1, 3, + -2, -2, -1, -1, 0, 0, 1, 1, 3, + -2, -2, -1, -1, 0, 1, 1, 2, 4, +}; + +static const int8_t buf_rate_adj_tab_i_vbr[72] = { + -4, -20, -28, -36, -40, -44, -48, -80, + +0, -8, -12, -20, -24, -28, -32, -36, + +0, 0, -8, -16, -20, -24, -28, -32, + +8, 4, 0, 0, -8, -16, -24, -28, + 32, 24, 16, 2, -4, -8, -16, -20, + 36, 32, 28, 16, 8, 0, -4, -8, + 40, 36, 24, 20, 16, 8, 0, -8, + 48, 40, 28, 24, 20, 12, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static const int8_t buf_rate_adj_tab_p_vbr[72] = { + -8, -24, -32, -44, -48, -56, -64, -80, + -8, -16, -32, -40, -44, -52, -56, -64, + +0, 0, -16, -28, -36, -40, -44, -48, + +8, 4, 0, 0, -8, -16, -24, -36, + 20, 12, 4, 0, -8, -8, -8, -16, + 24, 16, 8, 8, 8, 0, -4, -8, + 40, 36, 24, 20, 16, 8, 0, -8, + 48, 40, 28, 24, 20, 12, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static const int8_t buf_rate_adj_tab_b_vbr[72] = { + 0, -4, -8, -16, -24, -32, -40, -48, + 1, 0, -4, -8, -16, -24, -32, -40, + 4, 2, 0, -1, -3, -8, -16, -24, + 8, 4, 2, 0, -1, -4, -8, -16, + 20, 16, 4, 0, -1, -4, -8, -16, + 24, 20, 16, 8, 4, 0, -4, -8, + 28, 24, 20, 16, 8, 4, 0, -8, + 32, 24, 20, 16, 8, 4, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, +}; + +static struct huc_brc_update_constant_data +gen9_brc_update_constant_data = { + .global_rate_qp_adj_tab_i = { + 48, 40, 32, 24, 16, 8, 0, -8, + 40, 32, 24, 16, 8, 0, -8, -16, + 32, 24, 16, 8, 0, -8, -16, -24, + 24, 16, 8, 0, -8, -16, -24, -32, + 16, 8, 0, -8, -16, -24, -32, -40, + 8, 0, -8, -16, -24, -32, -40, -48, + 0, -8, -16, -24, -32, -40, -48, -56, + 48, 40, 32, 24, 16, 8, 0, -8, + }, + + .global_rate_qp_adj_tab_p = { + 48, 40, 32, 24, 16, 8, 0, -8, + 40, 32, 24, 16, 8, 0, -8, -16, + 16, 8, 8, 4, -8, -16, -16, -24, + 8, 0, 0, -8, -16, -16, -16, -24, + 8, 0, 0, -24, -32, -32, -32, -48, + 0, -16, -16, -24, -32, -48, -56, -64, + -8, -16, -32, -32, -48, -48, -56, -64, + -16,-32, -48, -48, -48, -56, -64, -80, + }, + + .global_rate_qp_adj_tab_b = { + 48, 40, 32, 24, 16, 8, 0, -8, + 40, 32, 24, 16, 8, 0, -8, -16, + 32, 24, 16, 8, 0, -8, -16, -24, + 24, 16, 8, 0, -8, -8, -16, -24, + 16, 8, 0, 0, -8, -16, -24, -32, + 16, 8, 0, 0, -8, -16, -24, -32, + 0, -8, -8, -16, -32, -48, -56, -64, + 0, -8, -8, -16, -32, -48, -56, -64 + }, + + .dist_threshld_i = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 }, + .dist_threshld_p = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 }, + .dist_threshld_b = { 2, 4, 8, 12, 19, 32, 64, 128, 0, 0 }, + + .dist_qp_adj_tab_i = { + 0, 0, 0, 0, 0, 3, 4, 6, 8, + 0, 0, 0, 0, 0, 2, 3, 5, 7, + -1, 0, 0, 0, 0, 2, 2, 4, 5, + -1, -1, 0, 0, 0, 1, 2, 2, 4, + -2, -2, -1, 0, 0, 0, 1, 2, 4, + -2, -2, -1, 0, 0, 0, 1, 2, 4, + -3, -2, -1, -1, 0, 0, 1, 2, 5, + -3, -2, -1, -1, 0, 0, 2, 4, 7, + -4, -3, -2, -1, 0, 1, 3, 5, 8, + }, + + .dist_qp_adj_tab_p = { + -1, 0, 0, 0, 0, 1, 1, 2, 3, + -1, -1, 0, 0, 0, 1, 1, 2, 3, + -2, -1, -1, 0, 0, 1, 1, 2, 3, + -3, -2, -2, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + -3, -2, -1, -1, 0, 0, 1, 2, 3, + }, + + .dist_qp_adj_tab_b = { + 0, 0, 0, 0, 0, 2, 3, 3, 4, + 0, 0, 0, 0, 0, 2, 3, 3, 4, + -1, 0, 0, 0, 0, 2, 2, 3, 3, + -1, -1, 0, 0, 0, 1, 2, 2, 2, + -1, -1, -1, 0, 0, 0, 1, 2, 2, + -2, -1, -1, 0, 0, 0, 0, 1, 2, + -2, -1, -1, -1, 0, 0, 0, 1, 3, + -2, -2, -1, -1, 0, 0, 1, 1, 3, + -2, -2, -1, -1, 0, 1, 1, 2, 4, + }, + + /* default table for non lowdelay */ + .buf_rate_adj_tab_i = { + -4, -20, -28, -36, -40, -44, -48, -80, + 0, -8, -12, -20, -24, -28, -32, -36, + 0, 0, -8, -16, -20, -24, -28, -32, + 8, 4, 0, 0, -8, -16, -24, -28, + 32, 24, 16, 2, -4, -8, -16, -20, + 36, 32, 28, 16, 8, 0, -4, -8, + 40, 36, 24, 20, 16, 8, 0, -8, + 48, 40, 28, 24, 20, 12, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, + }, + + /* default table for non lowdelay */ + .buf_rate_adj_tab_p = { + -8, -24, -32, -44, -48, -56, -64, -80, + -8, -16, -32, -40, -44, -52, -56, -64, + 0, 0, -16, -28, -36, -40, -44, -48, + 8, 4, 0, 0, -8, -16, -24, -36, + 20, 12, 4, 0, -8, -8, -8, -16, + 24, 16, 8, 8, 8, 0, -4, -8, + 40, 36, 24, 20, 16, 8, 0, -8, + 48, 40, 28, 24, 20, 12, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, + }, + + /* default table for non lowdelay */ + .buf_rate_adj_tab_b = { + 0, -4, -8, -16, -24, -32, -40, -48, + 1, 0, -4, -8, -16, -24, -32, -40, + 4, 2, 0, -1, -3, -8, -16, -24, + 8, 4, 2, 0, -1, -4, -8, -16, + 20, 16, 4, 0, -1, -4, -8, -16, + 24, 20, 16, 8, 4, 0, -4, -8, + 28, 24, 20, 16, 8, 4, 0, -8, + 32, 24, 20, 16, 8, 4, 0, -4, + 64, 48, 28, 20, 16, 12, 8, 4, + }, + + .frame_size_min_tab_p = { 1, 2, 4, 6, 8, 10, 16, 16, 16 }, + .frame_size_min_tab_i = { 1, 2, 4, 8, 16, 20, 24, 32, 36 }, + + .frame_size_max_tab_p = { 48, 64, 80, 96, 112, 128, 144, 160, 160 }, + .frame_size_max_tab_i = { 48, 64, 80, 96, 112, 128, 144, 160, 160 }, + + .frame_size_scg_tab_p = { 4, 8, 12, 16, 20, 24, 24, 0, 0 }, + .frame_size_scg_tab_i = { 4, 8, 12, 16, 20, 24, 24, 0, 0 }, + + .i_intra_non_pred = { + 0x0e, 0x0e, 0x0e, 0x18, 0x19, 0x1b, 0x1c, 0x0d, 0x0f, 0x18, 0x19, 0x0d, 0x0f, 0x0f, + 0x0c, 0x0e, 0x0c, 0x0c, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, + }, + + .i_intra_16x16 = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + .i_intra_8x8 = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, + }, + + .i_intra_4x4 = { + 0x2e, 0x2e, 0x2e, 0x38, 0x39, 0x3a, 0x3b, 0x2c, 0x2e, 0x38, 0x39, 0x2d, 0x2f, 0x38, + 0x2e, 0x38, 0x2e, 0x38, 0x2f, 0x2e, 0x38, 0x38, 0x38, 0x38, 0x2f, 0x2f, 0x2f, 0x2e, + 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28, 0x1e, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 0x0e, 0x0d, + }, + + .i_intra_chroma = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + .p_intra_non_pred = { + 0x06, 0x06, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x05, 0x06, 0x07, 0x08, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + }, + + .p_intra_16x16 = { + 0x1b, 0x1b, 0x1b, 0x1c, 0x1e, 0x28, 0x29, 0x1a, 0x1b, 0x1c, 0x1e, 0x1a, 0x1c, 0x1d, + 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1b, 0x1c, 0x1c, 0x1d, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c + }, + + .p_intra_8x8 = { + 0x1d, 0x1d, 0x1d, 0x1e, 0x28, 0x29, 0x2a, 0x1b, 0x1d, 0x1e, 0x28, 0x1c, 0x1d, 0x1f, + 0x1d, 0x1e, 0x1d, 0x1e, 0x1d, 0x1d, 0x1f, 0x1e, 0x1e, 0x1e, 0x1d, 0x1e, 0x1e, 0x1d, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, + }, + + .p_intra_4x4 = { + 0x38, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3d, 0x2e, 0x38, 0x39, 0x3a, 0x2f, 0x39, 0x3a, + 0x38, 0x39, 0x38, 0x39, 0x39, 0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, + }, + + .p_intra_chroma = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + .p_inter_16x8 = { + 0x07, 0x07, 0x07, 0x08, 0x09, 0x0b, 0x0c, 0x06, 0x07, 0x09, 0x0a, 0x07, 0x08, 0x09, + 0x08, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, + }, + + .p_inter_8x8 = { + 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, + 0x02, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + }, + + .p_inter_16x16 = { + 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + }, + + .p_ref_id = { + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + }, + + .hme_mv_cost = { + /* mv = 0 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* mv <= 16 */ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + + /* mv <= 32 */ + { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + }, + + /* mv <= 64 */ + { + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + }, + + /* mv <= 128 */ + { + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + }, + + /* mv <= 256 */ + { + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, + 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x1a, 0x1f, 0x2a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d + }, + + /* mv <= 512 */ + { + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x2a, 0x2f, 0x3a, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, + }, + + /* mv <= 1024 */ + { + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, + 0x1a, 0x1a, 0x1a, 0x1f, 0x2d, 0x3d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, + }, + }, +}; + +/* 11 DWs */ +static uint8_t vdenc_const_qp_lambda[44] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, + 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x13, 0x15, + 0x17, 0x1a, 0x1e, 0x21, 0x25, 0x2a, 0x2f, 0x35, 0x3b, 0x42, + 0x4a, 0x53, 0x00, 0x00 +}; + +/* 14 DWs */ +static uint16_t vdenc_const_skip_threshold[28] = { + +}; + +/* 14 DWs */ +static uint16_t vdenc_const_sic_forward_transform_coeff_threshold_0[28] = { + +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_1[28] = { + +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_2[28] = { + +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_3[28] = { + +}; + +/* P frame */ +/* 11 DWs */ +static uint8_t vdenc_const_qp_lambda_p[44] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, + 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x07, + 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d, 0x0f, 0x11, 0x13, 0x15, + 0x17, 0x1a, 0x1e, 0x21, 0x25, 0x2a, 0x2f, 0x35, 0x3b, 0x42, + 0x4a, 0x53, 0x00, 0x00 +}; + +/* 14 DWs */ +static uint16_t vdenc_const_skip_threshold_p[28] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0004, 0x0007, 0x000b, + 0x0011, 0x0019, 0x0023, 0x0032, 0x0044, 0x005b, 0x0077, 0x0099, + 0x00c2, 0x00f1, 0x0128, 0x0168, 0x01b0, 0x0201, 0x025c, 0x02c2, + 0x0333, 0x03b0, 0x0000, 0x0000 +}; + +/* 14 DWs */ +static uint16_t vdenc_const_sic_forward_transform_coeff_threshold_0_p[28] = { + 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x0e, + 0x12, 0x14, 0x18, 0x1d, 0x20, 0x25, 0x2a, 0x34, 0x39, 0x3f, + 0x4e, 0x51, 0x5b, 0x63, 0x6f, 0x7f, 0x00, 0x00 +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_1_p[28] = { + 0x03, 0x04, 0x05, 0x05, 0x07, 0x09, 0x0b, 0x0e, 0x12, 0x17, + 0x1c, 0x21, 0x27, 0x2c, 0x33, 0x3b, 0x41, 0x51, 0x5c, 0x1a, + 0x1e, 0x21, 0x22, 0x26, 0x2c, 0x30, 0x00, 0x00 +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_2_p[28] = { + 0x02, 0x02, 0x03, 0x04, 0x04, 0x05, 0x07, 0x09, 0x0b, 0x0e, + 0x12, 0x14, 0x18, 0x1d, 0x20, 0x25, 0x2a, 0x34, 0x39, 0x0f, + 0x13, 0x14, 0x16, 0x18, 0x1b, 0x1f, 0x00, 0x00 +}; + +/* 7 DWs */ +static uint8_t vdenc_const_sic_forward_transform_coeff_threshold_3_p[28] = { + 0x04, 0x05, 0x06, 0x09, 0x0b, 0x0d, 0x12, 0x16, 0x1b, 0x23, + 0x2c, 0x33, 0x3d, 0x45, 0x4f, 0x5b, 0x66, 0x7f, 0x8e, 0x2a, + 0x2f, 0x32, 0x37, 0x3c, 0x45, 0x4c, 0x00, 0x00 +}; + +static const double +vdenc_brc_dev_threshi0_fp_neg[4] = { 0.80, 0.60, 0.34, 0.2 }; + +static const double +vdenc_brc_dev_threshi0_fp_pos[4] = { 0.2, 0.4, 0.66, 0.9 }; + +static const double +vdenc_brc_dev_threshpb0_fp_neg[4] = { 0.90, 0.66, 0.46, 0.3 }; + +static const double +vdenc_brc_dev_threshpb0_fp_pos[4] = { 0.3, 0.46, 0.70, 0.90 }; + +static const double +vdenc_brc_dev_threshvbr0_neg[4] = { 0.90, 0.70, 0.50, 0.3 }; + +static const double +vdenc_brc_dev_threshvbr0_pos[4] = { 0.4, 0.5, 0.75, 0.90 }; + +static const unsigned char +vdenc_brc_estrate_thresh_p0[7] = { 4, 8, 12, 16, 20, 24, 28 }; + +static const unsigned char +vdenc_brc_estrate_thresh_i0[7] = { 4, 8, 12, 16, 20, 24, 28 }; + +static const uint16_t +vdenc_brc_start_global_adjust_frame[4] = { 10, 50, 100, 150 }; + +static const uint8_t +vdenc_brc_global_rate_ratio_threshold[7] = { 80, 90, 95, 101, 105, 115, 130}; + +static const uint8_t +vdenc_brc_start_global_adjust_mult[5] = { 1, 1, 3, 2, 1 }; + +static const uint8_t +vdenc_brc_start_global_adjust_div[5] = { 40, 5, 5, 3, 1 }; + +static const int8_t +vdenc_brc_global_rate_ratio_threshold_qp[8] = { -3, -2, -1, 0, 1, 1, 2, 3 }; + +const int vdenc_mode_const[2][12][52] = { + //INTRASLICE + { + //LUTMODE_INTRA_NONPRED + { + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, //QP=[0 ~12] + 16, 18, 22, 24, 13, 15, 16, 18, 13, 15, 15, 12, 14, //QP=[13~25] + 12, 12, 10, 10, 11, 10, 10, 10, 9, 9, 8, 8, 8, //QP=[26~38] + 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, //QP=[39~51] + }, + + //LUTMODE_INTRA_16x16, LUTMODE_INTRA + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51] + }, + + //LUTMODE_INTRA_8x8 + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, //QP=[13~25] + 1, 1, 1, 1, 1, 4, 4, 4, 4, 6, 6, 6, 6, //QP=[26~38] + 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, //QP=[39~51] + }, + + //LUTMODE_INTRA_4x4 + { + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, //QP=[0 ~12] + 64, 72, 80, 88, 48, 56, 64, 72, 53, 59, 64, 56, 64, //QP=[13~25] + 57, 64, 58, 55, 64, 64, 64, 64, 59, 59, 60, 57, 50, //QP=[26~38] + 46, 42, 38, 34, 31, 27, 23, 22, 19, 18, 16, 14, 13, //QP=[39~51] + }, + + //LUTMODE_INTER_16x8, LUTMODE_INTER_8x16 + { 0, }, + + //LUTMODE_INTER_8X8Q + { 0, }, + + //LUTMODE_INTER_8X4Q, LUTMODE_INTER_4X8Q, LUTMODE_INTER_16x8_FIELD + { 0, }, + + //LUTMODE_INTER_4X4Q, LUTMODE_INTER_8X8_FIELD + { 0, }, + + //LUTMODE_INTER_16x16, LUTMODE_INTER + { 0, }, + + //LUTMODE_INTER_BWD + { 0, }, + + //LUTMODE_REF_ID + { 0, }, + + //LUTMODE_INTRA_CHROMA + { 0, }, + }, + + //PREDSLICE + { + //LUTMODE_INTRA_NONPRED + { + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[0 ~12] + 7, 8, 9, 10, 5, 6, 7, 8, 6, 7, 7, 7, 7, //QP=[13~25] + 6, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[26~38] + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[39~51] + }, + + //LUTMODE_INTRA_16x16, LUTMODE_INTRA + { + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 24, 28, 31, 35, 19, 21, 24, 28, 20, 24, 25, 21, 24, + 24, 24, 24, 21, 24, 24, 26, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + + }, + + //LUTMODE_INTRA_8x8 + { + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, //QP=[0 ~12] + 28, 32, 36, 40, 22, 26, 28, 32, 24, 26, 30, 26, 28, //QP=[13~25] + 26, 28, 26, 26, 30, 28, 28, 28, 26, 28, 28, 26, 28, //QP=[26~38] + 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, //QP=[39~51] + }, + + //LUTMODE_INTRA_4x4 + { + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, //QP=[0 ~12] + 72, 80, 88, 104, 56, 64, 72, 80, 58, 68, 76, 64, 68, //QP=[13~25] + 64, 68, 68, 64, 70, 70, 70, 70, 68, 68, 68, 68, 68, //QP=[26~38] + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, //QP=[39~51] + }, + + //LUTMODE_INTER_16x8, LUTMODE_INTER_8x16 + { + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[0 ~12] + 8, 9, 11, 12, 6, 7, 9, 10, 7, 8, 9, 8, 9, //QP=[13~25] + 8, 9, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, //QP=[26~38] + 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, //QP=[39~51] + }, + + //LUTMODE_INTER_8X8Q + { + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, //QP=[0 ~12] + 2, 3, 3, 3, 2, 2, 2, 3, 2, 2, 2, 2, 3, //QP=[13~25] + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, //QP=[26~38] + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, //QP=[39~51] + }, + + //LUTMODE_INTER_8X4Q, LUTMODE_INTER_4X8Q, LUTMODE_INTER_16X8_FIELD + { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[13~25] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[26~38] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[39~51] + }, + + //LUTMODE_INTER_4X4Q, LUTMODE_INTER_8x8_FIELD + { + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[0 ~12] + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[13~25] + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[26~38] + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, //QP=[39~51] + }, + + //LUTMODE_INTER_16x16, LUTMODE_INTER + { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12] + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[13~25] + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[26~38] + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, //QP=[39~51] + }, + + //LUTMODE_INTER_BWD + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51] + }, + + //LUTMODE_REF_ID + { + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[0 ~12] + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[13~25] + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[26~38] + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, //QP=[39~51] + }, + + //LUTMODE_INTRA_CHROMA + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13~25] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26~38] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39~51] + }, + }, +}; + +const int vdenc_mv_cost_skipbias_qpel[8] = { + //PREDSLICE + 0, 6, 6, 9, 10, 13, 14, 16 +}; + +const int vdenc_hme_cost[8][52] = { + //mv=0 + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13 ~25] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26 ~38] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39 ~51] + }, + //mv<=16 + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[0 ~12] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[13 ~25] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[26 ~38] + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //QP=[39 ~51] + }, + //mv<=32 + { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[0 ~12] + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[13 ~25] + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[26 ~38] + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, //QP=[39 ~51] + }, + //mv<=64 + { + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[0 ~12] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[13 ~25] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[26 ~38] + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //QP=[39 ~51] + }, + //mv<=128 + { + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[0 ~12] + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[13 ~25] + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[26 ~38] + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[39 ~51] + }, + //mv<=256 + { + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[0 ~12] + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[13 ~25] + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, //QP=[26 ~38] + 10, 10, 10, 10, 20, 30, 40, 50, 50, 50, 50, 50, 50, //QP=[39 ~51] + }, + //mv<=512 + { + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[0 ~12] + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[13 ~25] + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[26 ~38] + 20, 20, 20, 40, 60, 80, 100, 100, 100, 100, 100, 100, 100, //QP=[39 ~51] + }, + + //mv<=1024 + { + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[0 ~12] + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[13 ~25] + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, //QP=[26 ~38] + 20, 20, 30, 50, 100, 200, 200, 200, 200, 200, 200, 200, 200, //QP=[39 ~51] + }, +}; + +#define OUT_BUFFER_2DW(batch, bo, is_target, delta) do { \ + if (bo) { \ + OUT_BCS_RELOC64(batch, \ + bo, \ + I915_GEM_DOMAIN_RENDER, \ + is_target ? I915_GEM_DOMAIN_RENDER : 0, \ + delta); \ + } else { \ + OUT_BCS_BATCH(batch, 0); \ + OUT_BCS_BATCH(batch, 0); \ + } \ + } while (0) + +#define OUT_BUFFER_3DW(batch, bo, is_target, delta, attr) do { \ + OUT_BUFFER_2DW(batch, bo, is_target, delta); \ + OUT_BCS_BATCH(batch, attr); \ + } while (0) + +#define ALLOC_VDENC_BUFFER_RESOURCE(buffer, bfsize, des) { \ + buffer.type = I965_GPE_RESOURCE_BUFFER; \ + buffer.width = bfsize; \ + buffer.height = 1; \ + buffer.pitch = buffer.width; \ + buffer.size = buffer.pitch; \ + buffer.tiling = I915_TILING_NONE; \ + i965_allocate_gpe_resource(i965->intel.bufmgr, \ + &buffer, \ + bfsize, \ + (des)); \ + } while (0) + +static int +gen9_vdenc_get_max_vmv_range(int level) +{ + int max_vmv_range = 512; + + if (level == 10) + max_vmv_range = 256; + else if (level <= 20) + max_vmv_range = 512; + else if (level <= 30) + max_vmv_range = 1024; + else + max_vmv_range = 2048; + + return max_vmv_range; +} + +static unsigned char +map_44_lut_value(unsigned int v, unsigned char max) +{ + unsigned int maxcost; + int d; + unsigned char ret; + + if (v == 0) { + return 0; + } + + maxcost = ((max & 15) << (max >> 4)); + + if (v >= maxcost) { + return max; + } + + d = (int)(log((double)v) / log(2.0)) - 3; + + if (d < 0) { + d = 0; + } + + ret = (unsigned char)((d << 4) + (int)((v + (d == 0 ? 0 : (1 << (d - 1)))) >> d)); + ret = (ret & 0xf) == 0 ? (ret | 8) : ret; + + return ret; +} + +static void +gen9_vdenc_update_rate_control_parameters(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + VAEncMiscParameterRateControl *misc) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + + vdenc_context->max_bit_rate = ALIGN(misc->bits_per_second, 1000) / 1000; + vdenc_context->mb_brc_enabled = 0; + + if (vdenc_context->internal_rate_mode == I965_BRC_CBR) { + vdenc_context->min_bit_rate = vdenc_context->max_bit_rate; + vdenc_context->mb_brc_enabled = (misc->rc_flags.bits.mb_rate_control < 2); + + if (vdenc_context->target_bit_rate != vdenc_context->max_bit_rate) { + vdenc_context->target_bit_rate = vdenc_context->max_bit_rate; + vdenc_context->brc_need_reset = 1; + } + } else if (vdenc_context->internal_rate_mode == I965_BRC_VBR) { + vdenc_context->min_bit_rate = vdenc_context->max_bit_rate * (2 * misc->target_percentage - 100) / 100; + vdenc_context->mb_brc_enabled = (misc->rc_flags.bits.mb_rate_control < 2); + + if (vdenc_context->target_bit_rate != vdenc_context->max_bit_rate * misc->target_percentage / 100) { + vdenc_context->target_bit_rate = vdenc_context->max_bit_rate * misc->target_percentage / 100; + vdenc_context->brc_need_reset = 1; + } + } +} + +static void +gen9_vdenc_update_hrd_parameters(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + VAEncMiscParameterHRD *misc) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + + if (vdenc_context->internal_rate_mode == I965_BRC_CQP) + return; + + vdenc_context->vbv_buffer_size_in_bit = misc->buffer_size; + vdenc_context->init_vbv_buffer_fullness_in_bit = misc->initial_buffer_fullness; +} + +static void +gen9_vdenc_update_framerate_parameters(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + VAEncMiscParameterFrameRate *misc) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + + vdenc_context->frames_per_100s = misc->framerate; /* misc->framerate is multiple of 100 */ +} + +static void +gen9_vdenc_update_roi_parameters(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + VAEncMiscParameterBufferROI *misc) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + int i; + + if (!misc || !misc->roi) { + vdenc_context->num_roi = 0; + return; + } + + vdenc_context->num_roi = MIN(misc->num_roi, 3); + vdenc_context->max_delta_qp = misc->max_delta_qp; + vdenc_context->min_delta_qp = misc->min_delta_qp; + vdenc_context->vdenc_streamin_enable = (vdenc_context->num_roi == 0); + + for (i = 0; i < vdenc_context->num_roi; i++) { + vdenc_context->roi[i].left = misc->roi->roi_rectangle.x; + vdenc_context->roi[i].right = vdenc_context->roi[i].left + misc->roi->roi_rectangle.width; + vdenc_context->roi[i].top = misc->roi->roi_rectangle.y; + vdenc_context->roi[i].bottom = vdenc_context->roi[i].top + misc->roi->roi_rectangle.height; + vdenc_context->roi[i].value = misc->roi->roi_value; + + vdenc_context->roi[i].left /= 16; + vdenc_context->roi[i].right /= 16; + vdenc_context->roi[i].top /= 16; + vdenc_context->roi[i].bottom /= 16; + } +} + +static void +gen9_vdenc_update_misc_parameters(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + int i; + VAEncMiscParameterBuffer *misc_param; + + for (i = 0; i < ARRAY_ELEMS(encode_state->misc_param); i++) { + if (!encode_state->misc_param[i] || !encode_state->misc_param[i]->buffer) + continue; + + misc_param = (VAEncMiscParameterBuffer *)encode_state->misc_param[i]->buffer; + + switch (misc_param->type) { + case VAEncMiscParameterTypeFrameRate: + gen9_vdenc_update_framerate_parameters(ctx, + encoder_context, + (VAEncMiscParameterFrameRate *)misc_param->data); + break; + + case VAEncMiscParameterTypeRateControl: + gen9_vdenc_update_rate_control_parameters(ctx, + encoder_context, + (VAEncMiscParameterRateControl *)misc_param->data); + break; + + case VAEncMiscParameterTypeHRD: + gen9_vdenc_update_hrd_parameters(ctx, + encoder_context, + (VAEncMiscParameterHRD *)misc_param->data); + break; + + case VAEncMiscParameterTypeROI: + gen9_vdenc_update_roi_parameters(ctx, + encoder_context, + (VAEncMiscParameterBufferROI *)misc_param->data); + break; + + default: + break; + } + } +} + +static void +gen9_vdenc_update_parameters(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + + if (profile == VAProfileH264High) + vdenc_context->transform_8x8_mode_enable = !!pic_param->pic_fields.bits.transform_8x8_mode_flag; + else + vdenc_context->transform_8x8_mode_enable = 0; + + vdenc_context->frame_width_in_mbs = seq_param->picture_width_in_mbs; + vdenc_context->frame_height_in_mbs = seq_param->picture_height_in_mbs; + + vdenc_context->frame_width = vdenc_context->frame_width_in_mbs * 16; + vdenc_context->frame_height = vdenc_context->frame_height_in_mbs * 16; + + vdenc_context->down_scaled_width_in_mb4x = WIDTH_IN_MACROBLOCKS(vdenc_context->frame_width / SCALE_FACTOR_4X); + vdenc_context->down_scaled_height_in_mb4x = HEIGHT_IN_MACROBLOCKS(vdenc_context->frame_height / SCALE_FACTOR_4X); + vdenc_context->down_scaled_width_4x = vdenc_context->down_scaled_width_in_mb4x * 16; + vdenc_context->down_scaled_height_4x = ((vdenc_context->down_scaled_height_in_mb4x + 1) >> 1) * 16; + vdenc_context->down_scaled_height_4x = ALIGN(vdenc_context->down_scaled_height_4x, 32) << 1; + + if (vdenc_context->internal_rate_mode == I965_BRC_CBR) { + vdenc_context->target_bit_rate = ALIGN(seq_param->bits_per_second, 1000) / 1000; + vdenc_context->max_bit_rate = ALIGN(seq_param->bits_per_second, 1000) / 1000; + vdenc_context->min_bit_rate = ALIGN(seq_param->bits_per_second, 1000) / 1000; + } + + vdenc_context->init_vbv_buffer_fullness_in_bit = seq_param->bits_per_second; + vdenc_context->vbv_buffer_size_in_bit = (uint64_t)seq_param->bits_per_second << 1; + vdenc_context->frames_per_100s = 3000; /* 30fps */ + vdenc_context->gop_size = seq_param->intra_period; + vdenc_context->ref_dist = seq_param->ip_period; + vdenc_context->vdenc_streamin_enable = 0; + + gen9_vdenc_update_misc_parameters(ctx, encode_state, encoder_context); + + vdenc_context->current_pass = 0; + vdenc_context->num_passes = 1; + + if (vdenc_context->internal_rate_mode == I965_BRC_CBR || + vdenc_context->internal_rate_mode == I965_BRC_VBR) + vdenc_context->brc_enabled = 1; + else + vdenc_context->brc_enabled = 0; + + if (vdenc_context->brc_enabled && + (!vdenc_context->init_vbv_buffer_fullness_in_bit || + !vdenc_context->vbv_buffer_size_in_bit || + !vdenc_context->max_bit_rate || + !vdenc_context->target_bit_rate || + !vdenc_context->frames_per_100s)) + vdenc_context->brc_enabled = 0; + + if (!vdenc_context->brc_enabled) { + vdenc_context->target_bit_rate = 0; + vdenc_context->max_bit_rate = 0; + vdenc_context->min_bit_rate = 0; + vdenc_context->init_vbv_buffer_fullness_in_bit = 0; + vdenc_context->vbv_buffer_size_in_bit = 0; + } else { + vdenc_context->num_passes = NUM_OF_BRC_PAK_PASSES; + } +} + +static void +gen9_vdenc_avc_calculate_mode_cost(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int qp) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + unsigned int frame_type = vdenc_context->frame_type; + + memset(vdenc_context->mode_cost, 0, sizeof(vdenc_context->mode_cost)); + memset(vdenc_context->mv_cost, 0, sizeof(vdenc_context->mv_cost)); + memset(vdenc_context->hme_mv_cost, 0, sizeof(vdenc_context->hme_mv_cost)); + + vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_NONPRED] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_NONPRED][qp]), 0x6f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_16x16] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_16x16][qp]), 0x8f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_8x8] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_8x8][qp]), 0x8f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTRA_4x4] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTRA_4x4][qp]), 0x8f); + + if (frame_type == VDENC_FRAME_P) { + vdenc_context->mode_cost[VDENC_LUTMODE_INTER_16x16] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_16x16][qp]), 0x8f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTER_16x8] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_16x8][qp]), 0x8f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTER_8X8Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_8X8Q][qp]), 0x6f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTER_8X4Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_8X4Q][qp]), 0x6f); + vdenc_context->mode_cost[VDENC_LUTMODE_INTER_4X4Q] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_INTER_4X4Q][qp]), 0x6f); + vdenc_context->mode_cost[VDENC_LUTMODE_REF_ID] = map_44_lut_value((uint32_t)(vdenc_mode_const[frame_type][VDENC_LUTMODE_REF_ID][qp]), 0x6f); + + vdenc_context->mv_cost[0] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[0]), 0x6f); + vdenc_context->mv_cost[1] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[1]), 0x6f); + vdenc_context->mv_cost[2] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[2]), 0x6f); + vdenc_context->mv_cost[3] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[3]), 0x6f); + vdenc_context->mv_cost[4] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[4]), 0x6f); + vdenc_context->mv_cost[5] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[5]), 0x6f); + vdenc_context->mv_cost[6] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[6]), 0x6f); + vdenc_context->mv_cost[7] = map_44_lut_value((uint32_t)(vdenc_mv_cost_skipbias_qpel[7]), 0x6f); + + vdenc_context->hme_mv_cost[0] = map_44_lut_value((uint32_t)(vdenc_hme_cost[0][qp]), 0x6f); + vdenc_context->hme_mv_cost[1] = map_44_lut_value((uint32_t)(vdenc_hme_cost[1][qp]), 0x6f); + vdenc_context->hme_mv_cost[2] = map_44_lut_value((uint32_t)(vdenc_hme_cost[2][qp]), 0x6f); + vdenc_context->hme_mv_cost[3] = map_44_lut_value((uint32_t)(vdenc_hme_cost[3][qp]), 0x6f); + vdenc_context->hme_mv_cost[4] = map_44_lut_value((uint32_t)(vdenc_hme_cost[4][qp]), 0x6f); + vdenc_context->hme_mv_cost[5] = map_44_lut_value((uint32_t)(vdenc_hme_cost[5][qp]), 0x6f); + vdenc_context->hme_mv_cost[6] = map_44_lut_value((uint32_t)(vdenc_hme_cost[6][qp]), 0x6f); + vdenc_context->hme_mv_cost[7] = map_44_lut_value((uint32_t)(vdenc_hme_cost[7][qp]), 0x6f); + } +} + +static void +gen9_vdenc_update_roi_in_streamin_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct gen9_vdenc_streamin_state *streamin_state; + int row, col, i; + + if (!vdenc_context->num_roi) + return; + + streamin_state = (struct gen9_vdenc_streamin_state *)i965_map_gpe_resource(&vdenc_context->vdenc_streamin_res); + + if (!streamin_state) + return; + + for (col = 0; col < vdenc_context->frame_width_in_mbs; col++) { + for (row = 0; row < vdenc_context->frame_height_in_mbs; row++) { + streamin_state[row * vdenc_context->frame_width_in_mbs + col].dw0.roi_selection = 0; /* non-ROI region */ + + /* The last one has higher priority */ + for (i = vdenc_context->num_roi - 1; i >= 0; i--) { + if ((col >= vdenc_context->roi[i].left && col <= vdenc_context->roi[i].right) && + (row >= vdenc_context->roi[i].top && row <= vdenc_context->roi[i].bottom)) { + streamin_state[row * vdenc_context->frame_width_in_mbs + col].dw0.roi_selection = i + 1; + + break; + } + } + } + } + + i965_unmap_gpe_resource(&vdenc_context->vdenc_streamin_res); +} + +static VAStatus +gen9_vdenc_avc_prepare(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct i965_coded_buffer_segment *coded_buffer_segment; + struct object_surface *obj_surface; + struct object_buffer *obj_buffer; + VAEncPictureParameterBufferH264 *pic_param; + VAEncSliceParameterBufferH264 *slice_param; + VDEncAvcSurface *vdenc_avc_surface; + dri_bo *bo; + int i, j, enable_avc_ildb = 0; + int qp; + char *pbuffer; + + gen9_vdenc_update_parameters(ctx, profile, encode_state, encoder_context); + + for (j = 0; j < encode_state->num_slice_params_ext && enable_avc_ildb == 0; j++) { + assert(encode_state->slice_params_ext && encode_state->slice_params_ext[j]->buffer); + slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer; + + for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) { + assert((slice_param->slice_type == SLICE_TYPE_I) || + (slice_param->slice_type == SLICE_TYPE_SI) || + (slice_param->slice_type == SLICE_TYPE_P) || + (slice_param->slice_type == SLICE_TYPE_SP) || + (slice_param->slice_type == SLICE_TYPE_B)); + + if (slice_param->disable_deblocking_filter_idc != 1) { + enable_avc_ildb = 1; + break; + } + + slice_param++; + } + } + + /* Setup current frame */ + obj_surface = encode_state->reconstructed_object; + i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + + if (obj_surface->private_data == NULL) { + vdenc_avc_surface = calloc(sizeof(VDEncAvcSurface), 1); + assert(vdenc_avc_surface); + + vdenc_avc_surface->ctx = ctx; + i965_CreateSurfaces(ctx, + vdenc_context->down_scaled_width_4x, + vdenc_context->down_scaled_height_4x, + VA_RT_FORMAT_YUV420, + 1, + &vdenc_avc_surface->scaled_4x_surface_id); + vdenc_avc_surface->scaled_4x_surface_obj = SURFACE(vdenc_avc_surface->scaled_4x_surface_id); + assert(vdenc_avc_surface->scaled_4x_surface_obj); + i965_check_alloc_surface_bo(ctx, + vdenc_avc_surface->scaled_4x_surface_obj, + 1, + VA_FOURCC_NV12, + SUBSAMPLE_YUV420); + + obj_surface->private_data = (void *)vdenc_avc_surface; + obj_surface->free_private_data = (void *)vdenc_free_avc_surface; + } + + vdenc_avc_surface = (VDEncAvcSurface *)obj_surface->private_data; + assert(vdenc_avc_surface->scaled_4x_surface_obj); + + /* Reconstructed surfaces */ + i965_free_gpe_resource(&vdenc_context->recon_surface_res); + i965_free_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res); + i965_free_gpe_resource(&vdenc_context->post_deblocking_output_res); + i965_free_gpe_resource(&vdenc_context->pre_deblocking_output_res); + + i965_object_surface_to_2d_gpe_resource(&vdenc_context->recon_surface_res, obj_surface); + i965_object_surface_to_2d_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res, vdenc_avc_surface->scaled_4x_surface_obj); + + if (enable_avc_ildb) { + i965_object_surface_to_2d_gpe_resource(&vdenc_context->post_deblocking_output_res, obj_surface); + } else { + i965_object_surface_to_2d_gpe_resource(&vdenc_context->pre_deblocking_output_res, obj_surface); + } + + + /* Reference surfaces */ + for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) { + assert(ARRAY_ELEMS(vdenc_context->list_reference_res) == + ARRAY_ELEMS(vdenc_context->list_scaled_4x_reference_res)); + i965_free_gpe_resource(&vdenc_context->list_reference_res[i]); + i965_free_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i]); + obj_surface = encode_state->reference_objects[i]; + + if (obj_surface && obj_surface->bo) { + i965_object_surface_to_2d_gpe_resource(&vdenc_context->list_reference_res[i], obj_surface); + + if (obj_surface->private_data == NULL) { + vdenc_avc_surface = calloc(sizeof(VDEncAvcSurface), 1); + assert(vdenc_avc_surface); + + vdenc_avc_surface->ctx = ctx; + i965_CreateSurfaces(ctx, + vdenc_context->down_scaled_width_4x, + vdenc_context->down_scaled_height_4x, + VA_RT_FORMAT_YUV420, + 1, + &vdenc_avc_surface->scaled_4x_surface_id); + vdenc_avc_surface->scaled_4x_surface_obj = SURFACE(vdenc_avc_surface->scaled_4x_surface_id); + assert(vdenc_avc_surface->scaled_4x_surface_obj); + i965_check_alloc_surface_bo(ctx, + vdenc_avc_surface->scaled_4x_surface_obj, + 1, + VA_FOURCC_NV12, + SUBSAMPLE_YUV420); + + obj_surface->private_data = vdenc_avc_surface; + obj_surface->free_private_data = gen_free_avc_surface; + } + + vdenc_avc_surface = obj_surface->private_data; + i965_object_surface_to_2d_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i], vdenc_avc_surface->scaled_4x_surface_obj); + } + } + + /* Input YUV surface */ + i965_free_gpe_resource(&vdenc_context->uncompressed_input_surface_res); + i965_object_surface_to_2d_gpe_resource(&vdenc_context->uncompressed_input_surface_res, encode_state->input_yuv_object); + + /* Encoded bitstream */ + obj_buffer = encode_state->coded_buf_object; + bo = obj_buffer->buffer_store->bo; + i965_free_gpe_resource(&vdenc_context->compressed_bitstream.res); + i965_dri_object_to_buffer_gpe_resource(&vdenc_context->compressed_bitstream.res, bo); + vdenc_context->compressed_bitstream.start_offset = I965_CODEDBUFFER_HEADER_SIZE; + vdenc_context->compressed_bitstream.end_offset = ALIGN(obj_buffer->size_element - 0x1000, 0x1000); + + /* Status buffer */ + i965_free_gpe_resource(&vdenc_context->status_bffuer.res); + i965_dri_object_to_buffer_gpe_resource(&vdenc_context->status_bffuer.res, bo); + vdenc_context->status_bffuer.base_offset = offsetof(struct i965_coded_buffer_segment, codec_private_data); + vdenc_context->status_bffuer.size = ALIGN(sizeof(struct gen9_vdenc_status), 64); + vdenc_context->status_bffuer.bytes_per_frame_offset = offsetof(struct gen9_vdenc_status, bytes_per_frame); + assert(vdenc_context->status_bffuer.base_offset + vdenc_context->status_bffuer.size < + vdenc_context->compressed_bitstream.start_offset); + + dri_bo_map(bo, 1); + + coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual; + coded_buffer_segment->mapped = 0; + coded_buffer_segment->codec = encoder_context->codec; + coded_buffer_segment->status_support = 1; + + pbuffer = bo->virtual; + pbuffer += vdenc_context->status_bffuer.base_offset; + memset(pbuffer, 0, vdenc_context->status_bffuer.size); + + dri_bo_unmap(bo); + + i965_free_gpe_resource(&vdenc_context->mfx_intra_row_store_scratch_res); + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_intra_row_store_scratch_res, + vdenc_context->frame_width_in_mbs * 64, + "Intra row store scratch buffer"); + + i965_free_gpe_resource(&vdenc_context->mfx_deblocking_filter_row_store_scratch_res); + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_deblocking_filter_row_store_scratch_res, + vdenc_context->frame_width_in_mbs * 256, + "Deblocking filter row store scratch buffer"); + + i965_free_gpe_resource(&vdenc_context->mfx_bsd_mpc_row_store_scratch_res); + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->mfx_bsd_mpc_row_store_scratch_res, + vdenc_context->frame_width_in_mbs * 128, + "BSD/MPC row store scratch buffer"); + + i965_free_gpe_resource(&vdenc_context->vdenc_row_store_scratch_res); + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_row_store_scratch_res, + vdenc_context->frame_width_in_mbs * 64, + "VDENC row store scratch buffer"); + + assert(sizeof(struct gen9_vdenc_streamin_state) == 64); + i965_free_gpe_resource(&vdenc_context->vdenc_streamin_res); + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_streamin_res, + vdenc_context->frame_width_in_mbs * + vdenc_context->frame_height_in_mbs * + sizeof(struct gen9_vdenc_streamin_state), + "VDENC StreamIn buffer"); + + /* + * Calculate the index for each reference surface in list0 for the first slice + * TODO: other slices + */ + pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer; + + vdenc_context->num_refs[0] = pic_param->num_ref_idx_l0_active_minus1 + 1; + + if (slice_param->num_ref_idx_active_override_flag) + vdenc_context->num_refs[0] = slice_param->num_ref_idx_l0_active_minus1 + 1; + + if (vdenc_context->num_refs[0] > ARRAY_ELEMS(vdenc_context->list_ref_idx[0])) + return VA_STATUS_ERROR_INVALID_VALUE; + + for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_ref_idx[0]); i++) { + VAPictureH264 *va_pic; + + assert(ARRAY_ELEMS(slice_param->RefPicList0) == ARRAY_ELEMS(vdenc_context->list_ref_idx[0])); + vdenc_context->list_ref_idx[0][i] = 0; + + if (i >= vdenc_context->num_refs[0]) + continue; + + va_pic = &slice_param->RefPicList0[i]; + + for (j = 0; j < ARRAY_ELEMS(encode_state->reference_objects); j++) { + obj_surface = encode_state->reference_objects[j]; + + if (obj_surface && + obj_surface->bo && + obj_surface->base.id == va_pic->picture_id) { + + assert(obj_surface->base.id != VA_INVALID_SURFACE); + vdenc_context->list_ref_idx[0][i] = j; + + break; + } + } + } + + if (slice_param->slice_type == SLICE_TYPE_I || + slice_param->slice_type == SLICE_TYPE_SI) + vdenc_context->frame_type = VDENC_FRAME_I; + else + vdenc_context->frame_type = VDENC_FRAME_P; + + qp = pic_param->pic_init_qp + slice_param->slice_qp_delta; + + gen9_vdenc_avc_calculate_mode_cost(ctx, encode_state, encoder_context, qp); + gen9_vdenc_update_roi_in_streamin_state(ctx, encoder_context); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vdenc_huc_pipe_mode_select(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_pipe_mode_select_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 3); + + OUT_BCS_BATCH(batch, HUC_PIPE_MODE_SELECT | (3 - 2)); + OUT_BCS_BATCH(batch, + (params->huc_stream_object_enable << 10) | + (params->indirect_stream_out_enable << 4)); + OUT_BCS_BATCH(batch, + params->media_soft_reset_counter); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_huc_imem_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_imem_state_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 5); + + OUT_BCS_BATCH(batch, HUC_IMEM_STATE | (5 - 2)); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, params->huc_firmware_descriptor); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_huc_dmem_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_dmem_state_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, HUC_DMEM_STATE | (6 - 2)); + OUT_BUFFER_3DW(batch, params->huc_data_source_res->bo, 0, 0, 0); + OUT_BCS_BATCH(batch, params->huc_data_destination_base_address); + OUT_BCS_BATCH(batch, params->huc_data_length); + + ADVANCE_BCS_BATCH(batch); +} + +/* +static void +gen9_vdenc_huc_cfg_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_cfg_state_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 2); + + OUT_BCS_BATCH(batch, HUC_CFG_STATE | (2 - 2)); + OUT_BCS_BATCH(batch, !!params->force_reset); + + ADVANCE_BCS_BATCH(batch); +} +*/ +static void +gen9_vdenc_huc_virtual_addr_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_virtual_addr_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + int i; + + BEGIN_BCS_BATCH(batch, 49); + + OUT_BCS_BATCH(batch, HUC_VIRTUAL_ADDR_STATE | (49 - 2)); + + for (i = 0; i < 16; i++) { + if (params->regions[i].huc_surface_res && params->regions[i].huc_surface_res->bo) + OUT_BUFFER_3DW(batch, + params->regions[i].huc_surface_res->bo, + !!params->regions[i].is_target, 0, 0); + else + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + } + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_huc_ind_obj_base_addr_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_ind_obj_base_addr_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 11); + + OUT_BCS_BATCH(batch, HUC_IND_OBJ_BASE_ADDR_STATE | (11 - 2)); + + if (params->huc_indirect_stream_in_object_res) + OUT_BUFFER_3DW(batch, + params->huc_indirect_stream_in_object_res->bo, + 0, 0, 0); + else + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + OUT_BUFFER_2DW(batch, NULL, 0, 0); /* ignore access upper bound */ + + if (params->huc_indirect_stream_out_object_res) + OUT_BUFFER_3DW(batch, + params->huc_indirect_stream_out_object_res->bo, + 1, 0, 0); + else + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + OUT_BUFFER_2DW(batch, NULL, 0, 0); /* ignore access upper bound */ + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_huc_store_huc_status2(VADriverContextP ctx, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params; + struct gpe_mi_store_data_imm_parameter mi_store_data_imm_params; + + /* Write HUC_STATUS2 mask (1 << 6) */ + memset(&mi_store_data_imm_params, 0, sizeof(mi_store_data_imm_params)); + mi_store_data_imm_params.bo = vdenc_context->huc_status2_res.bo; + mi_store_data_imm_params.offset = 0; + mi_store_data_imm_params.dw0 = (1 << 6); + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm_params); + + /* Store HUC_STATUS2 */ + memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params)); + mi_store_register_mem_params.mmio_offset = VCS0_HUC_STATUS2; + mi_store_register_mem_params.bo = vdenc_context->huc_status2_res.bo; + mi_store_register_mem_params.offset = 4; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params); +} + +static void +gen9_vdenc_huc_stream_object(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_stream_object_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 5); + + OUT_BCS_BATCH(batch, HUC_STREAM_OBJECT | (5 - 2)); + OUT_BCS_BATCH(batch, params->indirect_stream_in_data_length); + OUT_BCS_BATCH(batch, + (1 << 31) | /* Must be 1 */ + params->indirect_stream_in_start_address); + OUT_BCS_BATCH(batch, params->indirect_stream_out_start_address); + OUT_BCS_BATCH(batch, + (!!params->huc_bitstream_enable << 29) | + (params->length_mode << 27) | + (!!params->stream_out << 26) | + (!!params->emulation_prevention_byte_removal << 25) | + (!!params->start_code_search_engine << 24) | + (params->start_code_byte2 << 16) | + (params->start_code_byte1 << 8) | + params->start_code_byte0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_huc_start(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct huc_start_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 2); + + OUT_BCS_BATCH(batch, HUC_START | (2 - 2)); + OUT_BCS_BATCH(batch, !!params->last_stream_object); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vd_pipeline_flush(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct vd_pipeline_flush_parameter *params) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 2); + + OUT_BCS_BATCH(batch, VD_PIPELINE_FLUSH | (2 - 2)); + OUT_BCS_BATCH(batch, + params->mfx_pipeline_command_flush << 19 | + params->mfl_pipeline_command_flush << 18 | + params->vdenc_pipeline_command_flush << 17 | + params->hevc_pipeline_command_flush << 16 | + params->vd_command_message_parser_done << 4 | + params->mfx_pipeline_done << 3 | + params->mfl_pipeline_done << 2 | + params->vdenc_pipeline_done << 1 | + params->hevc_pipeline_done); + + ADVANCE_BCS_BATCH(batch); +} + +static int +gen9_vdenc_get_max_mbps(int level_idc) +{ + int max_mbps = 11880; + + switch (level_idc) { + case 20: + max_mbps = 11880; + break; + + case 21: + max_mbps = 19800; + break; + + case 22: + max_mbps = 20250; + break; + + case 30: + max_mbps = 40500; + break; + + case 31: + max_mbps = 108000; + break; + + case 32: + max_mbps = 216000; + break; + + case 40: + case 41: + max_mbps = 245760; + break; + + case 42: + max_mbps = 522240; + break; + + case 50: + max_mbps = 589824; + break; + + case 51: + max_mbps = 983040; + break; + + case 52: + max_mbps = 2073600; + break; + + default: + break; + } + + return max_mbps; +}; + +static unsigned int +gen9_vdenc_get_profile_level_max_frame(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + int level_idc) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + double bits_per_mb, tmpf; + int max_mbps, num_mb_per_frame; + uint64_t max_byte_per_frame0, max_byte_per_frame1; + unsigned int ret; + + if (level_idc >= 31 && level_idc <= 40) + bits_per_mb = 96.0; + else + bits_per_mb = 192.0; + + max_mbps = gen9_vdenc_get_max_mbps(level_idc); + num_mb_per_frame = vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs; + + tmpf = (double)num_mb_per_frame; + + if (tmpf < max_mbps / 172.0) + tmpf = max_mbps / 172.0; + + max_byte_per_frame0 = (uint64_t)(tmpf * bits_per_mb); + max_byte_per_frame1 = (uint64_t)(((double)max_mbps * 100) / vdenc_context->frames_per_100s *bits_per_mb); + + /* TODO: check VAEncMiscParameterTypeMaxFrameSize */ + ret = (unsigned int)MIN(max_byte_per_frame0, max_byte_per_frame1); + ret = (unsigned int)MIN(ret, vdenc_context->frame_height * vdenc_context->frame_height); + + return ret; +} + +static int +gen9_vdenc_calculate_initial_qp(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + float x0 = 0, y0 = 1.19f, x1 = 1.75f, y1 = 1.75f; + unsigned frame_size; + int qp, delat_qp; + + frame_size = (vdenc_context->frame_width * vdenc_context->frame_height * 3 / 2); + qp = (int)(1.0 / 1.2 * pow(10.0, + (log10(frame_size * 2.0 / 3.0 * ((float)vdenc_context->frames_per_100s) / + ((float)(vdenc_context->target_bit_rate * 1000) * 100)) - x0) * + (y1 - y0) / (x1 - x0) + y0) + 0.5); + qp += 2; + delat_qp = (int)(9 - (vdenc_context->vbv_buffer_size_in_bit * ((float)vdenc_context->frames_per_100s) / + ((float)(vdenc_context->target_bit_rate * 1000) * 100))); + if (delat_qp > 0) + qp += delat_qp; + + qp = CLAMP(1, 51, qp); + qp--; + + if (qp < 0) + qp = 1; + + return qp; +} + +static void +gen9_vdenc_update_huc_brc_init_dmem(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct huc_brc_init_dmem *dmem; + VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + double input_bits_per_frame, bps_ratio; + int i; + + vdenc_context->brc_init_reset_input_bits_per_frame = ((double)(vdenc_context->max_bit_rate * 1000) * 100) / vdenc_context->frames_per_100s; + vdenc_context->brc_init_current_target_buf_full_in_bits = vdenc_context->brc_init_reset_input_bits_per_frame; + vdenc_context->brc_target_size = vdenc_context->init_vbv_buffer_fullness_in_bit; + + dmem = (struct huc_brc_init_dmem *)i965_map_gpe_resource(&vdenc_context->brc_init_reset_dmem_res); + + if (!dmem) + return; + + memset(dmem, 0, sizeof(*dmem)); + + dmem->brc_func = vdenc_context->brc_initted ? 2 : 0; + + dmem->frame_width = vdenc_context->frame_width; + dmem->frame_height = vdenc_context->frame_height; + + dmem->target_bitrate = vdenc_context->target_bit_rate * 1000; + dmem->min_rate = vdenc_context->min_bit_rate * 1000; + dmem->max_rate = vdenc_context->max_bit_rate * 1000; + dmem->buffer_size = vdenc_context->vbv_buffer_size_in_bit; + dmem->init_buffer_fullness = vdenc_context->init_vbv_buffer_fullness_in_bit; + + if (dmem->init_buffer_fullness > vdenc_context->init_vbv_buffer_fullness_in_bit) + dmem->init_buffer_fullness = vdenc_context->vbv_buffer_size_in_bit; + + if (vdenc_context->internal_rate_mode == I965_BRC_CBR) + dmem->brc_flag |= 0x10; + else if (vdenc_context->internal_rate_mode == I965_BRC_VBR) + dmem->brc_flag |= 0x20; + + dmem->frame_rate_m = vdenc_context->frames_per_100s; + dmem->frame_rate_d = 100; + + dmem->profile_level_max_frame = gen9_vdenc_get_profile_level_max_frame(ctx, encoder_context, seq_param->level_idc); + + if (vdenc_context->ref_dist && vdenc_context->gop_size > 0) + dmem->num_p_in_gop = (vdenc_context->gop_size - 1) / vdenc_context->ref_dist; + + dmem->min_qp = 10; + dmem->max_qp = 51; + + input_bits_per_frame = ((double)vdenc_context->max_bit_rate * 1000 * 100) / vdenc_context->frames_per_100s; + bps_ratio = input_bits_per_frame / ((double)vdenc_context->vbv_buffer_size_in_bit * 100 / vdenc_context->frames_per_100s); + + if (bps_ratio < 0.1) + bps_ratio = 0.1; + + if (bps_ratio > 3.5) + bps_ratio = 3.5; + + for (i = 0; i < 4; i++) { + dmem->dev_thresh_pb0[i] = (char)(-50 * pow(vdenc_brc_dev_threshpb0_fp_neg[i], bps_ratio)); + dmem->dev_thresh_pb0[i + 4] = (char)(50 * pow(vdenc_brc_dev_threshpb0_fp_pos[i], bps_ratio)); + + dmem->dev_thresh_i0[i] = (char)(-50 * pow(vdenc_brc_dev_threshi0_fp_neg[i], bps_ratio)); + dmem->dev_thresh_i0[i + 4] = (char)(50 * pow(vdenc_brc_dev_threshi0_fp_pos[i], bps_ratio)); + + dmem->dev_thresh_vbr0[i] = (char)(-50 * pow(vdenc_brc_dev_threshvbr0_neg[i], bps_ratio)); + dmem->dev_thresh_vbr0[i + 4] = (char)(100 * pow(vdenc_brc_dev_threshvbr0_pos[i], bps_ratio)); + } + + dmem->init_qp_ip = gen9_vdenc_calculate_initial_qp(ctx, encode_state, encoder_context); + + if (vdenc_context->mb_brc_enabled) { + dmem->mb_qp_ctrl = 1; + dmem->dist_qp_delta[0] = -5; + dmem->dist_qp_delta[1] = -2; + dmem->dist_qp_delta[2] = 2; + dmem->dist_qp_delta[3] = 5; + } + + dmem->slice_size_ctrl_en = 0; /* TODO: add support for slice size control */ + + dmem->oscillation_qp_delta = 0; /* TODO: add support */ + dmem->first_iframe_no_hrd_check = 0;/* TODO: add support */ + + // 2nd re-encode pass if possible + if (vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs >= (3840 * 2160 / 256)) { + dmem->top_qp_delta_thr_for_2nd_pass = 5; + dmem->bottom_qp_delta_thr_for_2nd_pass = 5; + dmem->top_frame_size_threshold_for_2nd_pass = 80; + dmem->bottom_frame_size_threshold_for_2nd_pass = 80; + } else { + dmem->top_qp_delta_thr_for_2nd_pass = 2; + dmem->bottom_qp_delta_thr_for_2nd_pass = 1; + dmem->top_frame_size_threshold_for_2nd_pass = 32; + dmem->bottom_frame_size_threshold_for_2nd_pass = 24; + } + + dmem->qp_select_for_first_pass = 1; + dmem->mb_header_compensation = 1; + dmem->delta_qp_adaptation = 1; + dmem->max_crf_quality_factor = 52; + + dmem->crf_quality_factor = 0; /* TODO: add support for CRF */ + dmem->scenario_info = 0; + + memcpy(&dmem->estrate_thresh_i0, vdenc_brc_estrate_thresh_i0, sizeof(dmem->estrate_thresh_i0)); + memcpy(&dmem->estrate_thresh_p0, vdenc_brc_estrate_thresh_p0, sizeof(dmem->estrate_thresh_p0)); + + i965_unmap_gpe_resource(&vdenc_context->brc_init_reset_dmem_res); +} + +static void +gen9_vdenc_huc_brc_init_reset(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct huc_pipe_mode_select_parameter pipe_mode_select_params; + struct huc_imem_state_parameter imem_state_params; + struct huc_dmem_state_parameter dmem_state_params; + struct huc_virtual_addr_parameter virtual_addr_params; + struct huc_ind_obj_base_addr_parameter ind_obj_base_addr_params; + struct huc_stream_object_parameter stream_object_params; + struct huc_start_parameter start_params; + struct vd_pipeline_flush_parameter pipeline_flush_params; + struct gpe_mi_flush_dw_parameter mi_flush_dw_params; + + vdenc_context->brc_target_size = vdenc_context->init_vbv_buffer_fullness_in_bit; + + memset(&imem_state_params, 0, sizeof(imem_state_params)); + imem_state_params.huc_firmware_descriptor = HUC_BRC_INIT_RESET; + gen9_vdenc_huc_imem_state(ctx, encoder_context, &imem_state_params); + + memset(&pipe_mode_select_params, 0, sizeof(pipe_mode_select_params)); + gen9_vdenc_huc_pipe_mode_select(ctx, encoder_context, &pipe_mode_select_params); + + gen9_vdenc_update_huc_brc_init_dmem(ctx, encode_state, encoder_context); + memset(&dmem_state_params, 0, sizeof(dmem_state_params)); + dmem_state_params.huc_data_source_res = &vdenc_context->brc_init_reset_dmem_res; + dmem_state_params.huc_data_destination_base_address = HUC_DMEM_DATA_OFFSET; + dmem_state_params.huc_data_length = ALIGN(sizeof(struct huc_brc_init_dmem), 64); + gen9_vdenc_huc_dmem_state(ctx, encoder_context, &dmem_state_params); + + memset(&virtual_addr_params, 0, sizeof(virtual_addr_params)); + virtual_addr_params.regions[0].huc_surface_res = &vdenc_context->brc_history_buffer_res; + virtual_addr_params.regions[0].is_target = 1; + gen9_vdenc_huc_virtual_addr_state(ctx, encoder_context, &virtual_addr_params); + + memset(&ind_obj_base_addr_params, 0, sizeof(ind_obj_base_addr_params)); + ind_obj_base_addr_params.huc_indirect_stream_in_object_res = &vdenc_context->huc_dummy_res; + ind_obj_base_addr_params.huc_indirect_stream_out_object_res = NULL; + gen9_vdenc_huc_ind_obj_base_addr_state(ctx, encoder_context, &ind_obj_base_addr_params); + + memset(&stream_object_params, 0, sizeof(stream_object_params)); + stream_object_params.indirect_stream_in_data_length = 1; + stream_object_params.indirect_stream_in_start_address = 0; + gen9_vdenc_huc_stream_object(ctx, encoder_context, &stream_object_params); + + gen9_vdenc_huc_store_huc_status2(ctx, encoder_context); + + memset(&start_params, 0, sizeof(start_params)); + start_params.last_stream_object = 1; + gen9_vdenc_huc_start(ctx, encoder_context, &start_params); + + memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params)); + pipeline_flush_params.hevc_pipeline_done = 1; + pipeline_flush_params.hevc_pipeline_command_flush = 1; + gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params); + + memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params)); + mi_flush_dw_params.video_pipeline_cache_invalidate = 1; + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params); +} + +static void +gen9_vdenc_update_huc_update_dmem(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct huc_brc_update_dmem *dmem; + int i, num_p_in_gop = 0; + + dmem = (struct huc_brc_update_dmem *)i965_map_gpe_resource(&vdenc_context->brc_update_dmem_res[vdenc_context->current_pass]); + + if (!dmem) + return; + + dmem->brc_func = 1; + + if (vdenc_context->brc_initted && (vdenc_context->current_pass == 0)) { + vdenc_context->brc_init_previous_target_buf_full_in_bits = + (uint32_t)(vdenc_context->brc_init_current_target_buf_full_in_bits); + vdenc_context->brc_init_current_target_buf_full_in_bits += vdenc_context->brc_init_reset_input_bits_per_frame; + vdenc_context->brc_target_size += vdenc_context->brc_init_reset_input_bits_per_frame; + } + + if (vdenc_context->brc_target_size > vdenc_context->vbv_buffer_size_in_bit) + vdenc_context->brc_target_size -= vdenc_context->vbv_buffer_size_in_bit; + + dmem->target_size = vdenc_context->brc_target_size; + + dmem->peak_tx_bits_per_frame = (uint32_t)(vdenc_context->brc_init_current_target_buf_full_in_bits - vdenc_context->brc_init_previous_target_buf_full_in_bits); + + dmem->target_slice_size = 0; // TODO: add support for slice size control + + memcpy(dmem->start_global_adjust_frame, vdenc_brc_start_global_adjust_frame, sizeof(dmem->start_global_adjust_frame)); + memcpy(dmem->global_rate_ratio_threshold, vdenc_brc_global_rate_ratio_threshold, sizeof(dmem->global_rate_ratio_threshold)); + + dmem->current_frame_type = (vdenc_context->frame_type + 2) % 3; // I frame:2, P frame:0, B frame:1 + + memcpy(dmem->start_global_adjust_mult, vdenc_brc_start_global_adjust_mult, sizeof(dmem->start_global_adjust_mult)); + memcpy(dmem->start_global_adjust_div, vdenc_brc_start_global_adjust_div, sizeof(dmem->start_global_adjust_div)); + memcpy(dmem->global_rate_ratio_threshold_qp, vdenc_brc_global_rate_ratio_threshold_qp, sizeof(dmem->global_rate_ratio_threshold_qp)); + + dmem->current_pak_pass = vdenc_context->current_pass; + dmem->max_num_passes = 2; + + dmem->scene_change_detect_enable = 1; + dmem->scene_change_prev_intra_percent_threshold = 96; + dmem->scene_change_cur_intra_perent_threshold = 192; + + if (vdenc_context->ref_dist && vdenc_context->gop_size > 0) + num_p_in_gop = (vdenc_context->gop_size - 1) / vdenc_context->ref_dist; + + for (i = 0; i < 2; i++) + dmem->scene_change_width[i] = MIN((num_p_in_gop + 1) / 5, 6); + + if (vdenc_context->is_low_delay) + dmem->ip_average_coeff = 0; + else + dmem->ip_average_coeff = 128; + + dmem->skip_frame_size = 0; + dmem->num_of_frames_skipped = 0; + + dmem->roi_source = 0; // TODO: add support for dirty ROI + dmem->hme_detection_enable = 0; // TODO: support HME kernel + dmem->hme_cost_enable = 1; + + dmem->second_level_batchbuffer_size = 228; + + i965_unmap_gpe_resource(&vdenc_context->brc_update_dmem_res[vdenc_context->current_pass]); +} + +static void +gen9_vdenc_init_mfx_avc_img_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct gen9_mfx_avc_img_state *pstate) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + + memset(pstate, 0, sizeof(*pstate)); + + pstate->dw0.value = (MFX_AVC_IMG_STATE | (sizeof(*pstate) / 4 - 2)); + + pstate->dw1.frame_size_in_mbs_minus1 = vdenc_context->frame_width_in_mbs * vdenc_context->frame_height_in_mbs - 1; + + pstate->dw2.frame_width_in_mbs_minus1 = vdenc_context->frame_width_in_mbs - 1; + pstate->dw2.frame_height_in_mbs_minus1 = vdenc_context->frame_height_in_mbs - 1; + + pstate->dw3.image_structure = 0; + pstate->dw3.weighted_bipred_idc = pic_param->pic_fields.bits.weighted_bipred_idc; + pstate->dw3.weighted_pred_flag = pic_param->pic_fields.bits.weighted_pred_flag; + pstate->dw3.brc_domain_rate_control_enable = 1; + pstate->dw3.chroma_qp_offset = pic_param->chroma_qp_index_offset; + pstate->dw3.second_chroma_qp_offset = pic_param->second_chroma_qp_index_offset; + + pstate->dw4.field_picture_flag = 0; + pstate->dw4.mbaff_mode_active = seq_param->seq_fields.bits.mb_adaptive_frame_field_flag; + pstate->dw4.frame_mb_only_flag = seq_param->seq_fields.bits.frame_mbs_only_flag; + pstate->dw4.transform_8x8_idct_mode_flag = vdenc_context->transform_8x8_mode_enable; + pstate->dw4.direct_8x8_interface_flag = seq_param->seq_fields.bits.direct_8x8_inference_flag; + pstate->dw4.constrained_intra_prediction_flag = pic_param->pic_fields.bits.constrained_intra_pred_flag; + pstate->dw4.entropy_coding_flag = pic_param->pic_fields.bits.entropy_coding_mode_flag; + pstate->dw4.mb_mv_format_flag = 1; + pstate->dw4.chroma_format_idc = seq_param->seq_fields.bits.chroma_format_idc; + pstate->dw4.mv_unpacked_flag = 1; + pstate->dw4.insert_test_flag = 0; + pstate->dw4.load_slice_pointer_flag = 0; + pstate->dw4.macroblock_stat_enable = 0; /* Always 0 in VDEnc mode */ + pstate->dw4.minimum_frame_size = 0; + + pstate->dw5.intra_mb_max_bit_flag = 1; + pstate->dw5.inter_mb_max_bit_flag = 1; + pstate->dw5.frame_size_over_flag = 1; + pstate->dw5.frame_size_under_flag = 1; + pstate->dw5.intra_mb_ipcm_flag = 1; + pstate->dw5.mb_rate_ctrl_flag = 0; /* Always 0 in VDEnc mode */ + pstate->dw5.non_first_pass_flag = 0; + pstate->dw5.aq_enable = pstate->dw5.aq_rounding = 0; + pstate->dw5.aq_chroma_disable = 1; + + pstate->dw6.intra_mb_max_size = 2700; + pstate->dw6.inter_mb_max_size = 4095; + + pstate->dw8.slice_delta_qp_max0 = 0; + pstate->dw8.slice_delta_qp_max1 = 0; + pstate->dw8.slice_delta_qp_max2 = 0; + pstate->dw8.slice_delta_qp_max3 = 0; + + pstate->dw9.slice_delta_qp_min0 = 0; + pstate->dw9.slice_delta_qp_min1 = 0; + pstate->dw9.slice_delta_qp_min2 = 0; + pstate->dw9.slice_delta_qp_min3 = 0; + + pstate->dw10.frame_bitrate_min = 0; + pstate->dw10.frame_bitrate_min_unit = 1; + pstate->dw10.frame_bitrate_min_unit_mode = 1; + pstate->dw10.frame_bitrate_max = (1 << 14) - 1; + pstate->dw10.frame_bitrate_max_unit = 1; + pstate->dw10.frame_bitrate_max_unit_mode = 1; + + pstate->dw11.frame_bitrate_min_delta = 0; + pstate->dw11.frame_bitrate_max_delta = 0; + + pstate->dw12.vad_error_logic = 1; + /* TODO: set paramters DW19/DW20 for slices */ +} + +static void +gen9_vdenc_init_vdenc_img_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct gen9_vdenc_img_state *pstate, + int update_cost) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + VAEncSliceParameterBufferH264 *slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[0]->buffer; + + memset(pstate, 0, sizeof(*pstate)); + + pstate->dw0.value = (VDENC_IMG_STATE | (sizeof(*pstate) / 4 - 2)); + + if (vdenc_context->frame_type == VDENC_FRAME_I) { + pstate->dw4.intra_sad_measure_adjustment = 2; + pstate->dw4.sub_macroblock_sub_partition_mask = 0x70; + + pstate->dw5.cre_prefetch_enable = 1; + + pstate->dw9.mode0_cost = 10; + pstate->dw9.mode1_cost = 0; + pstate->dw9.mode2_cost = 3; + pstate->dw9.mode3_cost = 30; + + pstate->dw20.penalty_for_intra_16x16_non_dc_prediction = 36; + pstate->dw20.penalty_for_intra_8x8_non_dc_prediction = 12; + pstate->dw20.penalty_for_intra_4x4_non_dc_prediction = 4; + + pstate->dw22.small_mb_size_in_word = 0xff; + pstate->dw22.large_mb_size_in_word = 0xff; + + pstate->dw27.max_hmv_r = 0x2000; + pstate->dw27.max_vmv_r = 0x200; + + pstate->dw33.qp_range_check_upper_bound = 0x33; + pstate->dw33.qp_range_check_lower_bound = 0x0a; + pstate->dw33.qp_range_check_value = 0x0f; + } else { + pstate->dw2.bidirectional_weight = 0x20; + + pstate->dw4.subpel_mode = 3; + pstate->dw4.bme_disable_for_fbr_message = 1; + pstate->dw4.inter_sad_measure_adjustment = 2; + pstate->dw4.intra_sad_measure_adjustment = 2; + pstate->dw4.sub_macroblock_sub_partition_mask = 0x70; + + pstate->dw5.cre_prefetch_enable = 1; + + pstate->dw8.non_skip_zero_mv_const_added = 1; + pstate->dw8.non_skip_mb_mode_const_added = 1; + pstate->dw8.ref_id_cost_mode_select = 1; + + pstate->dw9.mode0_cost = 7; + pstate->dw9.mode1_cost = 26; + pstate->dw9.mode2_cost = 30; + pstate->dw9.mode3_cost = 57; + + pstate->dw10.mode4_cost = 8; + pstate->dw10.mode5_cost = 2; + pstate->dw10.mode6_cost = 4; + pstate->dw10.mode7_cost = 6; + + pstate->dw11.mode8_cost = 5; + pstate->dw11.mode9_cost = 0; + pstate->dw11.ref_id_cost = 4; + pstate->dw11.chroma_intra_mode_cost = 0; + + pstate->dw12_13.mv_cost.dw0.mv0_cost = 0; + pstate->dw12_13.mv_cost.dw0.mv1_cost = 6; + pstate->dw12_13.mv_cost.dw0.mv2_cost = 6; + pstate->dw12_13.mv_cost.dw0.mv3_cost = 9; + pstate->dw12_13.mv_cost.dw1.mv4_cost = 10; + pstate->dw12_13.mv_cost.dw1.mv5_cost = 13; + pstate->dw12_13.mv_cost.dw1.mv6_cost = 14; + pstate->dw12_13.mv_cost.dw1.mv7_cost = 24; + + pstate->dw20.penalty_for_intra_16x16_non_dc_prediction = 36; + pstate->dw20.penalty_for_intra_8x8_non_dc_prediction = 12; + pstate->dw20.penalty_for_intra_4x4_non_dc_prediction = 4; + + pstate->dw22.small_mb_size_in_word = 0xff; + pstate->dw22.large_mb_size_in_word = 0xff; + + pstate->dw27.max_hmv_r = 0x2000; + pstate->dw27.max_vmv_r = 0x200; + + pstate->dw31.offset0_for_zone0_neg_zone1_boundary = 800; + + pstate->dw32.offset1_for_zone1_neg_zone2_boundary = 1600; + pstate->dw32.offset2_for_zone2_neg_zone3_boundary = 2400; + + pstate->dw33.qp_range_check_upper_bound = 0x33; + pstate->dw33.qp_range_check_lower_bound = 0x0a; + pstate->dw33.qp_range_check_value = 0x0f; + + pstate->dw34.midpoint_distortion = 0x640; + } + + /* ROI will be updated in HuC kernel for CBR/VBR */ + if (!vdenc_context->brc_enabled && vdenc_context->num_roi) { + pstate->dw34.roi_enable = 1; + + pstate->dw30.roi_qp_adjustment_for_zone1 = CLAMP(-8, 7, vdenc_context->roi[0].value); + + if (vdenc_context->num_roi > 1) + pstate->dw30.roi_qp_adjustment_for_zone2 = CLAMP(-8, 7, vdenc_context->roi[1].value); + + if (vdenc_context->num_roi > 2) + pstate->dw30.roi_qp_adjustment_for_zone3 = CLAMP(-8, 7, vdenc_context->roi[2].value); + } + + pstate->dw1.transform_8x8_flag = vdenc_context->transform_8x8_mode_enable; + + pstate->dw3.picture_width = vdenc_context->frame_width_in_mbs; + + pstate->dw4.forward_transform_skip_check_enable = 1; /* TODO: double-check it */ + + pstate->dw5.picture_height_minus1 = vdenc_context->frame_height_in_mbs - 1; + pstate->dw5.picture_type = vdenc_context->frame_type; + pstate->dw5.constrained_intra_prediction_flag = pic_param->pic_fields.bits.constrained_intra_pred_flag; + + if (vdenc_context->frame_type == VDENC_FRAME_P) { + pstate->dw5.hme_ref1_disable = vdenc_context->num_refs[0] == 1 ? 1 : 0; + } + + pstate->dw5.mb_slice_threshold_value = 0; + + pstate->dw6.slice_macroblock_height_minus1 = vdenc_context->frame_height_in_mbs - 1; /* single slice onlye */ + + if (pstate->dw1.transform_8x8_flag) + pstate->dw8.luma_intra_partition_mask = 0; + else + pstate->dw8.luma_intra_partition_mask = (1 << 1); /* disable transform_8x8 */ + + pstate->dw14.qp_prime_y = pic_param->pic_init_qp + slice_param->slice_qp_delta; /* TODO: check whether it is OK to use the first slice only */ + + if (update_cost) { + pstate->dw9.mode0_cost = vdenc_context->mode_cost[0]; + pstate->dw9.mode1_cost = vdenc_context->mode_cost[1]; + pstate->dw9.mode2_cost = vdenc_context->mode_cost[2]; + pstate->dw9.mode3_cost = vdenc_context->mode_cost[3]; + + pstate->dw10.mode4_cost = vdenc_context->mode_cost[4]; + pstate->dw10.mode5_cost = vdenc_context->mode_cost[5]; + pstate->dw10.mode6_cost = vdenc_context->mode_cost[6]; + pstate->dw10.mode7_cost = vdenc_context->mode_cost[7]; + + pstate->dw11.mode8_cost = vdenc_context->mode_cost[8]; + pstate->dw11.mode9_cost = vdenc_context->mode_cost[9]; + pstate->dw11.ref_id_cost = vdenc_context->mode_cost[10]; + pstate->dw11.chroma_intra_mode_cost = vdenc_context->mode_cost[11]; + + pstate->dw12_13.mv_cost.dw0.mv0_cost = vdenc_context->mv_cost[0]; + pstate->dw12_13.mv_cost.dw0.mv1_cost = vdenc_context->mv_cost[1]; + pstate->dw12_13.mv_cost.dw0.mv2_cost = vdenc_context->mv_cost[2]; + pstate->dw12_13.mv_cost.dw0.mv3_cost = vdenc_context->mv_cost[3]; + pstate->dw12_13.mv_cost.dw1.mv4_cost = vdenc_context->mv_cost[4]; + pstate->dw12_13.mv_cost.dw1.mv5_cost = vdenc_context->mv_cost[5]; + pstate->dw12_13.mv_cost.dw1.mv6_cost = vdenc_context->mv_cost[6]; + pstate->dw12_13.mv_cost.dw1.mv7_cost = vdenc_context->mv_cost[7]; + + pstate->dw28_29.hme_mv_cost.dw0.mv0_cost = vdenc_context->hme_mv_cost[0]; + pstate->dw28_29.hme_mv_cost.dw0.mv1_cost = vdenc_context->hme_mv_cost[1]; + pstate->dw28_29.hme_mv_cost.dw0.mv2_cost = vdenc_context->hme_mv_cost[2]; + pstate->dw28_29.hme_mv_cost.dw0.mv3_cost = vdenc_context->hme_mv_cost[3]; + pstate->dw28_29.hme_mv_cost.dw1.mv4_cost = vdenc_context->hme_mv_cost[4]; + pstate->dw28_29.hme_mv_cost.dw1.mv5_cost = vdenc_context->hme_mv_cost[5]; + pstate->dw28_29.hme_mv_cost.dw1.mv6_cost = vdenc_context->hme_mv_cost[6]; + pstate->dw28_29.hme_mv_cost.dw1.mv7_cost = vdenc_context->hme_mv_cost[7]; + } + + pstate->dw27.max_vmv_r = gen9_vdenc_get_max_vmv_range(seq_param->level_idc); + + pstate->dw34.image_state_qp_override = (vdenc_context->internal_rate_mode == I965_BRC_CQP) ? 1 : 0; + + /* TODO: check rolling I */ + + /* TODO: handle ROI */ + + /* TODO: check stream in support */ +} + +static void +gen9_vdenc_init_img_states(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct gen9_mfx_avc_img_state *mfx_img_cmd; + struct gen9_vdenc_img_state *vdenc_img_cmd; + char *pbuffer; + + pbuffer = i965_map_gpe_resource(&vdenc_context->vdenc_avc_image_state_res); + + if (!pbuffer) + return; + + mfx_img_cmd = (struct gen9_mfx_avc_img_state *)pbuffer; + gen9_vdenc_init_mfx_avc_img_state(ctx, encode_state, encoder_context, mfx_img_cmd); + pbuffer += sizeof(*mfx_img_cmd); + + vdenc_img_cmd = (struct gen9_vdenc_img_state *)pbuffer; + gen9_vdenc_init_vdenc_img_state(ctx, encode_state, encoder_context, vdenc_img_cmd, 0); + pbuffer += sizeof(*vdenc_img_cmd); + + /* Add batch buffer end command */ + *((unsigned int *)pbuffer) = MI_BATCH_BUFFER_END; + + i965_unmap_gpe_resource(&vdenc_context->vdenc_avc_image_state_res); +} + +static void +gen9_vdenc_huc_brc_update_constant_data(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + char *pbuffer; + + pbuffer = i965_map_gpe_resource(&vdenc_context->brc_constant_data_res); + + if (!pbuffer) + return; + + if (vdenc_context->internal_rate_mode == I965_BRC_VBR) { + memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_i, dist_qp_adj_tab_i_vbr, sizeof(dist_qp_adj_tab_i_vbr)); + memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_p, dist_qp_adj_tab_p_vbr, sizeof(dist_qp_adj_tab_p_vbr)); + memcpy(gen9_brc_update_constant_data.dist_qp_adj_tab_b, dist_qp_adj_tab_b_vbr, sizeof(dist_qp_adj_tab_b_vbr)); + memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_i, buf_rate_adj_tab_i_vbr, sizeof(buf_rate_adj_tab_i_vbr)); + memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_p, buf_rate_adj_tab_p_vbr, sizeof(buf_rate_adj_tab_p_vbr)); + memcpy(gen9_brc_update_constant_data.buf_rate_adj_tab_b, buf_rate_adj_tab_b_vbr, sizeof(buf_rate_adj_tab_b_vbr)); + } + + memcpy(pbuffer, &gen9_brc_update_constant_data, sizeof(gen9_brc_update_constant_data)); + + i965_unmap_gpe_resource(&vdenc_context->brc_constant_data_res); +} + +static void +gen9_vdenc_huc_brc_update(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct huc_pipe_mode_select_parameter pipe_mode_select_params; + struct huc_imem_state_parameter imem_state_params; + struct huc_dmem_state_parameter dmem_state_params; + struct huc_virtual_addr_parameter virtual_addr_params; + struct huc_ind_obj_base_addr_parameter ind_obj_base_addr_params; + struct huc_stream_object_parameter stream_object_params; + struct huc_start_parameter start_params; + struct vd_pipeline_flush_parameter pipeline_flush_params; + struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params; + struct gpe_mi_store_data_imm_parameter mi_store_data_imm_params; + struct gpe_mi_flush_dw_parameter mi_flush_dw_params; + + memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params)); + mi_flush_dw_params.video_pipeline_cache_invalidate = 1; + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params); + + if (!vdenc_context->brc_initted || vdenc_context->brc_need_reset) { + struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params; + + memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params)); + mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status2_res.bo; + gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params); + } + + gen9_vdenc_init_img_states(ctx, encode_state, encoder_context); + + memset(&imem_state_params, 0, sizeof(imem_state_params)); + imem_state_params.huc_firmware_descriptor = HUC_BRC_UPDATE; + gen9_vdenc_huc_imem_state(ctx, encoder_context, &imem_state_params); + + memset(&pipe_mode_select_params, 0, sizeof(pipe_mode_select_params)); + gen9_vdenc_huc_pipe_mode_select(ctx, encoder_context, &pipe_mode_select_params); + + gen9_vdenc_update_huc_update_dmem(ctx, encoder_context); + memset(&dmem_state_params, 0, sizeof(dmem_state_params)); + dmem_state_params.huc_data_source_res = &vdenc_context->brc_update_dmem_res[vdenc_context->current_pass]; + dmem_state_params.huc_data_destination_base_address = HUC_DMEM_DATA_OFFSET; + dmem_state_params.huc_data_length = ALIGN(sizeof(struct huc_brc_update_dmem), 64); + gen9_vdenc_huc_dmem_state(ctx, encoder_context, &dmem_state_params); + + gen9_vdenc_huc_brc_update_constant_data(ctx, encode_state, encoder_context); + memset(&virtual_addr_params, 0, sizeof(virtual_addr_params)); + virtual_addr_params.regions[0].huc_surface_res = &vdenc_context->brc_history_buffer_res; + virtual_addr_params.regions[0].is_target = 1; + virtual_addr_params.regions[1].huc_surface_res = &vdenc_context->vdenc_statistics_res; + virtual_addr_params.regions[2].huc_surface_res = &vdenc_context->pak_statistics_res; + virtual_addr_params.regions[3].huc_surface_res = &vdenc_context->vdenc_avc_image_state_res; + virtual_addr_params.regions[4].huc_surface_res = &vdenc_context->hme_detection_summary_buffer_res; + virtual_addr_params.regions[4].is_target = 1; + virtual_addr_params.regions[5].huc_surface_res = &vdenc_context->brc_constant_data_res; + virtual_addr_params.regions[6].huc_surface_res = &vdenc_context->second_level_batch_res; + virtual_addr_params.regions[6].is_target = 1; + gen9_vdenc_huc_virtual_addr_state(ctx, encoder_context, &virtual_addr_params); + + memset(&ind_obj_base_addr_params, 0, sizeof(ind_obj_base_addr_params)); + ind_obj_base_addr_params.huc_indirect_stream_in_object_res = &vdenc_context->huc_dummy_res; + ind_obj_base_addr_params.huc_indirect_stream_out_object_res = NULL; + gen9_vdenc_huc_ind_obj_base_addr_state(ctx, encoder_context, &ind_obj_base_addr_params); + + memset(&stream_object_params, 0, sizeof(stream_object_params)); + stream_object_params.indirect_stream_in_data_length = 1; + stream_object_params.indirect_stream_in_start_address = 0; + gen9_vdenc_huc_stream_object(ctx, encoder_context, &stream_object_params); + + gen9_vdenc_huc_store_huc_status2(ctx, encoder_context); + + memset(&start_params, 0, sizeof(start_params)); + start_params.last_stream_object = 1; + gen9_vdenc_huc_start(ctx, encoder_context, &start_params); + + memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params)); + pipeline_flush_params.hevc_pipeline_done = 1; + pipeline_flush_params.hevc_pipeline_command_flush = 1; + gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params); + + memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params)); + mi_flush_dw_params.video_pipeline_cache_invalidate = 1; + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params); + + /* Store HUC_STATUS */ + memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params)); + mi_store_register_mem_params.mmio_offset = VCS0_HUC_STATUS; + mi_store_register_mem_params.bo = vdenc_context->huc_status_res.bo; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params); + + /* Write HUC_STATUS mask (1 << 31) */ + memset(&mi_store_data_imm_params, 0, sizeof(mi_store_data_imm_params)); + mi_store_data_imm_params.bo = vdenc_context->huc_status_res.bo; + mi_store_data_imm_params.offset = 4; + mi_store_data_imm_params.dw0 = (1 << 31); + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm_params); +} + +static void +gen9_vdenc_mfx_pipe_mode_select(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 5); + + OUT_BCS_BATCH(batch, MFX_PIPE_MODE_SELECT | (5 - 2)); + OUT_BCS_BATCH(batch, + (1 << 29) | + (MFX_LONG_MODE << 17) | /* Must be long format for encoder */ + (MFD_MODE_VLD << 15) | + (1 << 13) | /* VDEnc mode */ + ((!!vdenc_context->post_deblocking_output_res.bo) << 9) | /* Post Deblocking Output */ + ((!!vdenc_context->pre_deblocking_output_res.bo) << 8) | /* Pre Deblocking Output */ + (1 << 7) | /* Scaled surface enable */ + (1 << 6) | /* Frame statistics stream out enable, always '1' in VDEnc mode */ + (1 << 4) | /* encoding mode */ + (MFX_FORMAT_AVC << 0)); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_surface_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource, + int id) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, MFX_SURFACE_STATE | (6 - 2)); + OUT_BCS_BATCH(batch, id); + OUT_BCS_BATCH(batch, + ((gpe_resource->height - 1) << 18) | + ((gpe_resource->width - 1) << 4)); + OUT_BCS_BATCH(batch, + (MFX_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface */ + (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */ + ((gpe_resource->pitch - 1) << 3) | /* pitch */ + (0 << 2) | /* must be 0 for interleave U/V */ + (1 << 1) | /* must be tiled */ + (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */ + OUT_BCS_BATCH(batch, + (0 << 16) | /* must be 0 for interleave U/V */ + (gpe_resource->y_cb_offset)); /* y offset for U(cb) */ + OUT_BCS_BATCH(batch, + (0 << 16) | /* must be 0 for interleave U/V */ + (gpe_resource->y_cb_offset)); /* y offset for U(cb) */ + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_pipe_buf_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + int i; + + BEGIN_BCS_BATCH(batch, 65); + + OUT_BCS_BATCH(batch, MFX_PIPE_BUF_ADDR_STATE | (65 - 2)); + + /* the DW1-3 is for pre_deblocking */ + OUT_BUFFER_3DW(batch, vdenc_context->pre_deblocking_output_res.bo, 1, 0, 0); + + /* the DW4-6 is for the post_deblocking */ + OUT_BUFFER_3DW(batch, vdenc_context->post_deblocking_output_res.bo, 1, 0, 0); + + /* the DW7-9 is for the uncompressed_picture */ + OUT_BUFFER_3DW(batch, vdenc_context->uncompressed_input_surface_res.bo, 0, 0, 0); + + /* the DW10-12 is for PAK information (write) */ + OUT_BUFFER_3DW(batch, vdenc_context->pak_statistics_res.bo, 1, 0, 0); + + /* the DW13-15 is for the intra_row_store_scratch */ + OUT_BUFFER_3DW(batch, vdenc_context->mfx_intra_row_store_scratch_res.bo, 1, 0, 0); + + /* the DW16-18 is for the deblocking filter */ + OUT_BUFFER_3DW(batch, vdenc_context->mfx_deblocking_filter_row_store_scratch_res.bo, 1, 0, 0); + + /* the DW 19-50 is for Reference pictures*/ + for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) { + OUT_BUFFER_2DW(batch, vdenc_context->list_reference_res[i].bo, 0, 0); + } + + /* DW 51, reference picture attributes */ + OUT_BCS_BATCH(batch, 0); + + /* The DW 52-54 is for PAK information (read) */ + OUT_BUFFER_3DW(batch, vdenc_context->pak_statistics_res.bo, 0, 0, 0); + + /* the DW 55-57 is the ILDB buffer */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* the DW 58-60 is the second ILDB buffer */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW 61, memory compress enable & mode */ + OUT_BCS_BATCH(batch, 0); + + /* the DW 62-64 is the 4x Down Scaling surface */ + OUT_BUFFER_3DW(batch, vdenc_context->scaled_4x_recon_surface_res.bo, 0, 0, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_ind_obj_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 26); + + OUT_BCS_BATCH(batch, MFX_IND_OBJ_BASE_ADDR_STATE | (26 - 2)); + /* The DW1-5 is for the MFX indirect bistream offset, ignore for VDEnc mode */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + OUT_BUFFER_2DW(batch, NULL, 0, 0); + + /* the DW6-10 is for MFX Indirect MV Object Base Address, ignore for VDEnc mode */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + OUT_BUFFER_2DW(batch, NULL, 0, 0); + + /* The DW11-15 is for MFX IT-COFF. Not used on encoder */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + OUT_BUFFER_2DW(batch, NULL, 0, 0); + + /* The DW16-20 is for MFX indirect DBLK. Not used on encoder */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + OUT_BUFFER_2DW(batch, NULL, 0, 0); + + /* The DW21-25 is for MFC Indirect PAK-BSE Object Base Address for Encoder + * Note: an offset is specified in MFX_AVC_SLICE_STATE + */ + OUT_BUFFER_3DW(batch, + vdenc_context->compressed_bitstream.res.bo, + 1, + 0, + 0); + OUT_BUFFER_2DW(batch, + vdenc_context->compressed_bitstream.res.bo, + 1, + vdenc_context->compressed_bitstream.end_offset); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_bsp_buf_base_addr_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 10); + + OUT_BCS_BATCH(batch, MFX_BSP_BUF_BASE_ADDR_STATE | (10 - 2)); + + /* The DW1-3 is for bsd/mpc row store scratch buffer */ + OUT_BUFFER_3DW(batch, vdenc_context->mfx_bsd_mpc_row_store_scratch_res.bo, 1, 0, 0); + + /* The DW4-6 is for MPR Row Store Scratch Buffer Base Address, ignore for encoder */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* The DW7-9 is for Bitplane Read Buffer Base Address, ignore for encoder */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_qm_state(VADriverContextP ctx, + int qm_type, + unsigned int *qm, + int qm_length, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + unsigned int qm_buffer[16]; + + assert(qm_length <= 16); + assert(sizeof(*qm) == 4); + memcpy(qm_buffer, qm, qm_length * 4); + + BEGIN_BCS_BATCH(batch, 18); + OUT_BCS_BATCH(batch, MFX_QM_STATE | (18 - 2)); + OUT_BCS_BATCH(batch, qm_type << 0); + intel_batchbuffer_data(batch, qm_buffer, 16 * 4); + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_avc_qm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + /* TODO: add support for non flat matrix */ + unsigned int qm[16] = { + 0x10101010, 0x10101010, 0x10101010, 0x10101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010, + 0x10101010, 0x10101010, 0x10101010, 0x10101010 + }; + + gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 12, encoder_context); + gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 12, encoder_context); + gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 16, encoder_context); + gen9_vdenc_mfx_qm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 16, encoder_context); +} + +static void +gen9_vdenc_mfx_fqm_state(VADriverContextP ctx, + int fqm_type, + unsigned int *fqm, + int fqm_length, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + unsigned int fqm_buffer[32]; + + assert(fqm_length <= 32); + assert(sizeof(*fqm) == 4); + memcpy(fqm_buffer, fqm, fqm_length * 4); + + BEGIN_BCS_BATCH(batch, 34); + OUT_BCS_BATCH(batch, MFX_FQM_STATE | (34 - 2)); + OUT_BCS_BATCH(batch, fqm_type << 0); + intel_batchbuffer_data(batch, fqm_buffer, 32 * 4); + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_avc_fqm_state(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + /* TODO: add support for non flat matrix */ + unsigned int qm[32] = { + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000, + 0x10001000, 0x10001000, 0x10001000, 0x10001000 + }; + + gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_4X4_INTRA_MATRIX, qm, 24, encoder_context); + gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_4X4_INTER_MATRIX, qm, 24, encoder_context); + gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_8x8_INTRA_MATRIX, qm, 32, encoder_context); + gen9_vdenc_mfx_fqm_state(ctx, MFX_QM_AVC_8x8_INTER_MATRIX, qm, 32, encoder_context); +} + +static void +gen9_vdenc_mfx_avc_img_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_mfx_avc_img_state mfx_img_cmd; + + gen9_vdenc_init_mfx_avc_img_state(ctx, encode_state, encoder_context, &mfx_img_cmd); + + BEGIN_BCS_BATCH(batch, (sizeof(mfx_img_cmd) >> 2)); + intel_batchbuffer_data(batch, &mfx_img_cmd, sizeof(mfx_img_cmd)); + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_pipe_mode_select(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 2); + + OUT_BCS_BATCH(batch, VDENC_PIPE_MODE_SELECT | (2 - 2)); + OUT_BCS_BATCH(batch, + (vdenc_context->vdenc_streamin_enable << 9) | + (vdenc_context->vdenc_pak_threshold_check_enable << 8) | + (1 << 7) | /* Tlb prefetch enable */ + (1 << 5) | /* Frame Statistics Stream-Out Enable */ + (VDENC_CODEC_AVC << 0)); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_surface_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource, + int vdenc_surface_cmd) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, vdenc_surface_cmd | (6 - 2)); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, + ((gpe_resource->height - 1) << 18) | + ((gpe_resource->width - 1) << 4)); + OUT_BCS_BATCH(batch, + (VDENC_SURFACE_PLANAR_420_8 << 28) | /* 420 planar YUV surface only on SKL */ + (1 << 27) | /* must be 1 for interleave U/V, hardware requirement */ + ((gpe_resource->pitch - 1) << 3) | /* pitch */ + (0 << 2) | /* must be 0 for interleave U/V */ + (1 << 1) | /* must be tiled */ + (I965_TILEWALK_YMAJOR << 0)); /* tile walk, TILEWALK_YMAJOR */ + OUT_BCS_BATCH(batch, + (0 << 16) | /* must be 0 for interleave U/V */ + (gpe_resource->y_cb_offset)); /* y offset for U(cb) */ + OUT_BCS_BATCH(batch, + (0 << 16) | /* must be 0 for interleave U/V */ + (gpe_resource->y_cb_offset)); /* y offset for v(cr) */ + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_src_surface_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource) +{ + gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_SRC_SURFACE_STATE); +} + +static void +gen9_vdenc_vdenc_ref_surface_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource) +{ + gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_REF_SURFACE_STATE); +} + +static void +gen9_vdenc_vdenc_ds_ref_surface_state(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource) +{ + gen9_vdenc_vdenc_surface_state(ctx, encoder_context, gpe_resource, VDENC_DS_REF_SURFACE_STATE); +} + +static void +gen9_vdenc_vdenc_pipe_buf_addr_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 37); + + OUT_BCS_BATCH(batch, VDENC_PIPE_BUF_ADDR_STATE | (37 - 2)); + + /* DW1-6 for DS FWD REF0/REF1 */ + OUT_BUFFER_3DW(batch, vdenc_context->list_scaled_4x_reference_res[vdenc_context->list_ref_idx[0][0]].bo, 0, 0, 0); + OUT_BUFFER_3DW(batch, vdenc_context->list_scaled_4x_reference_res[vdenc_context->list_ref_idx[0][1]].bo, 0, 0, 0); + + /* DW7-9 for DS BWD REF0, ignored on SKL */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW10-12 for uncompressed input data */ + OUT_BUFFER_3DW(batch, vdenc_context->uncompressed_input_surface_res.bo, 0, 0, 0); + + /* DW13-DW15 for streamin data */ + if (vdenc_context->vdenc_streamin_enable) + OUT_BUFFER_3DW(batch, vdenc_context->vdenc_streamin_res.bo, 0, 0, 0); + else + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW16-DW18 for row scratch buffer */ + OUT_BUFFER_3DW(batch, vdenc_context->vdenc_row_store_scratch_res.bo, 1, 0, 0); + + /* DW19-DW21, ignored on SKL */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW22-DW27 for FWD REF0/REF1 */ + OUT_BUFFER_3DW(batch, vdenc_context->list_reference_res[vdenc_context->list_ref_idx[0][0]].bo, 0, 0, 0); + OUT_BUFFER_3DW(batch, vdenc_context->list_reference_res[vdenc_context->list_ref_idx[0][1]].bo, 0, 0, 0); + + /* DW28-DW30 for FWD REF2, ignored on SKL */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW31-DW33 for BDW REF0, ignored on SKL */ + OUT_BUFFER_3DW(batch, NULL, 0, 0, 0); + + /* DW34-DW36 for VDEnc statistics streamout */ + OUT_BUFFER_3DW(batch, vdenc_context->vdenc_statistics_res.bo, 1, 0, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_const_qpt_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 61); + + OUT_BCS_BATCH(batch, VDENC_CONST_QPT_STATE | (61 - 2)); + + if (vdenc_context->frame_type == VDENC_FRAME_I) { + /* DW1-DW11 */ + intel_batchbuffer_data(batch, vdenc_const_qp_lambda, sizeof(vdenc_const_qp_lambda)); + + /* DW12-DW25 */ + intel_batchbuffer_data(batch, vdenc_const_skip_threshold, sizeof(vdenc_const_skip_threshold)); + + /* DW26-DW39 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_0, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_0)); + + /* DW40-DW46 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_1, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_1)); + + /* DW47-DW53 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_2, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_2)); + + /* DW54-DW60 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_3, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_3)); + } else { + int i; + + for (i = 0; i < 28; i++) { + vdenc_const_skip_threshold_p[i] *= 3; + } + + /* DW1-DW11 */ + intel_batchbuffer_data(batch, vdenc_const_qp_lambda_p, sizeof(vdenc_const_qp_lambda_p)); + + /* DW12-DW25 */ + intel_batchbuffer_data(batch, vdenc_const_skip_threshold_p, sizeof(vdenc_const_skip_threshold_p)); + + /* DW26-DW39 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_0_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_0_p)); + + /* DW40-DW46 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_1_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_1_p)); + + /* DW47-DW53 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_2_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_2_p)); + + /* DW54-DW60 */ + intel_batchbuffer_data(batch, vdenc_const_sic_forward_transform_coeff_threshold_3_p, sizeof(vdenc_const_sic_forward_transform_coeff_threshold_3_p)); + } + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_walker_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 2); + + OUT_BCS_BATCH(batch, VDENC_WALKER_STATE | (2 - 2)); + OUT_BCS_BATCH(batch, 0); /* All fields are set to 0 */ + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_vdenc_img_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_vdenc_img_state vdenc_img_cmd; + + gen9_vdenc_init_vdenc_img_state(ctx, encode_state, encoder_context, &vdenc_img_cmd, 1); + + BEGIN_BCS_BATCH(batch, (sizeof(vdenc_img_cmd) >> 2)); + intel_batchbuffer_data(batch, &vdenc_img_cmd, sizeof(vdenc_img_cmd)); + ADVANCE_BCS_BATCH(batch); +} + +extern int +intel_avc_enc_slice_type_fixup(int slice_type); + +static void +gen9_vdenc_mfx_avc_insert_object(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + unsigned int *insert_data, int lenght_in_dws, int data_bits_in_last_dw, + int skip_emul_byte_count, int is_last_header, int is_end_of_slice, int emulation_flag, + int slice_header_indicator) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + if (data_bits_in_last_dw == 0) + data_bits_in_last_dw = 32; + + BEGIN_BCS_BATCH(batch, lenght_in_dws + 2); + + OUT_BCS_BATCH(batch, MFX_INSERT_OBJECT | (lenght_in_dws)); + OUT_BCS_BATCH(batch, + (0 << 16) | /* always start at offset 0 */ + (slice_header_indicator << 14) | + (data_bits_in_last_dw << 8) | + (skip_emul_byte_count << 4) | + (!!emulation_flag << 3) | + ((!!is_last_header) << 2) | + ((!!is_end_of_slice) << 1) | + (0 << 0)); /* TODO: check this flag */ + intel_batchbuffer_data(batch, insert_data, lenght_in_dws * 4); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vdenc_mfx_avc_insert_slice_packed_data(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int slice_index) +{ + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int length_in_bits; + unsigned int *header_data = NULL; + int count, i, start_index; + int slice_header_index; + + if (encode_state->slice_header_index[slice_index] == 0) + slice_header_index = -1; + else + slice_header_index = (encode_state->slice_header_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK); + + count = encode_state->slice_rawdata_count[slice_index]; + start_index = (encode_state->slice_rawdata_index[slice_index] & SLICE_PACKED_DATA_INDEX_MASK); + + for (i = 0; i < count; i++) { + unsigned int skip_emul_byte_cnt; + + header_data = (unsigned int *)encode_state->packed_header_data_ext[start_index + i]->buffer; + + param = (VAEncPackedHeaderParameterBuffer *)(encode_state->packed_header_params_ext[start_index + i]->buffer); + + /* skip the slice header packed data type as it is lastly inserted */ + if (param->type == VAEncPackedHeaderSlice) + continue; + + length_in_bits = param->bit_length; + + skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits); + + /* as the slice header is still required, the last header flag is set to + * zero. + */ + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + skip_emul_byte_cnt, + 0, + 0, + !param->has_emulation_bytes, + 0); + } + + if (slice_header_index == -1) { + VAEncSequenceParameterBufferH264 *seq_param = (VAEncSequenceParameterBufferH264 *)encode_state->seq_param_ext->buffer; + VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + VAEncSliceParameterBufferH264 *slice_params = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[slice_index]->buffer; + unsigned char *slice_header = NULL; + int slice_header_length_in_bits = 0; + + /* No slice header data is passed. And the driver needs to generate it */ + /* For the Normal H264 */ + slice_header_length_in_bits = build_avc_slice_header(seq_param, + pic_param, + slice_params, + &slice_header); + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + (unsigned int *)slice_header, + ALIGN(slice_header_length_in_bits, 32) >> 5, + slice_header_length_in_bits & 0x1f, + 5, /* first 5 bytes are start code + nal unit type */ + 1, 0, 1, + 1); + + free(slice_header); + } else { + unsigned int skip_emul_byte_cnt; + + header_data = (unsigned int *)encode_state->packed_header_data_ext[slice_header_index]->buffer; + + param = (VAEncPackedHeaderParameterBuffer *)(encode_state->packed_header_params_ext[slice_header_index]->buffer); + length_in_bits = param->bit_length; + + /* as the slice header is the last header data for one slice, + * the last header flag is set to one. + */ + skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits); + + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + skip_emul_byte_cnt, + 1, + 0, + !param->has_emulation_bytes, + 1); + } + + return; +} + +static void +gen9_vdenc_mfx_avc_inset_headers(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncSliceParameterBufferH264 *slice_param, + int slice_index) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + int idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SPS); + unsigned int internal_rate_mode = vdenc_context->internal_rate_mode; + unsigned int skip_emul_byte_cnt; + + if (slice_index == 0) { + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits); + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + skip_emul_byte_cnt, + 0, + 0, + !param->has_emulation_bytes, + 0); + } + + idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_PPS); + + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits); + + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + skip_emul_byte_cnt, + 0, + 0, + !param->has_emulation_bytes, + 0); + } + + idx = va_enc_packed_type_to_idx(VAEncPackedHeaderH264_SEI); + + if (encode_state->packed_header_data[idx]) { + VAEncPackedHeaderParameterBuffer *param = NULL; + unsigned int *header_data = (unsigned int *)encode_state->packed_header_data[idx]->buffer; + unsigned int length_in_bits; + + assert(encode_state->packed_header_param[idx]); + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_param[idx]->buffer; + length_in_bits = param->bit_length; + + skip_emul_byte_cnt = intel_avc_find_skipemulcnt((unsigned char *)header_data, length_in_bits); + gen9_vdenc_mfx_avc_insert_object(ctx, + encoder_context, + header_data, + ALIGN(length_in_bits, 32) >> 5, + length_in_bits & 0x1f, + skip_emul_byte_cnt, + 0, + 0, + !param->has_emulation_bytes, + 0); + } else if (internal_rate_mode == I965_BRC_CBR) { + /* TODO: insert others */ + } + } + + gen9_vdenc_mfx_avc_insert_slice_packed_data(ctx, + encode_state, + encoder_context, + slice_index); +} + +static void +gen9_vdenc_mfx_avc_slice_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncPictureParameterBufferH264 *pic_param, + VAEncSliceParameterBufferH264 *slice_param, + VAEncSliceParameterBufferH264 *next_slice_param) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + unsigned int luma_log2_weight_denom = slice_param->luma_log2_weight_denom; + unsigned int chroma_log2_weight_denom = slice_param->chroma_log2_weight_denom; + unsigned char correct[6], grow, shrink; + int slice_hor_pos, slice_ver_pos, next_slice_hor_pos, next_slice_ver_pos; + int max_qp_n, max_qp_p; + int i; + int weighted_pred_idc = 0; + int num_ref_l0 = 0, num_ref_l1 = 0; + int slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type); + int slice_qp = pic_param->pic_init_qp + slice_param->slice_qp_delta; // TODO: fix for CBR&VBR */ + + slice_hor_pos = slice_param->macroblock_address % vdenc_context->frame_width_in_mbs; + slice_ver_pos = slice_param->macroblock_address / vdenc_context->frame_height_in_mbs; + + if (next_slice_param) { + next_slice_hor_pos = next_slice_param->macroblock_address % vdenc_context->frame_width_in_mbs; + next_slice_ver_pos = next_slice_param->macroblock_address / vdenc_context->frame_height_in_mbs; + } else { + next_slice_hor_pos = 0; + next_slice_ver_pos = vdenc_context->frame_height_in_mbs; + } + + if (slice_type == SLICE_TYPE_I) { + luma_log2_weight_denom = 0; + chroma_log2_weight_denom = 0; + } else if (slice_type == SLICE_TYPE_P) { + weighted_pred_idc = pic_param->pic_fields.bits.weighted_pred_flag; + num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1; + + if (slice_param->num_ref_idx_active_override_flag) + num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1; + } else if (slice_type == SLICE_TYPE_B) { + weighted_pred_idc = pic_param->pic_fields.bits.weighted_bipred_idc; + num_ref_l0 = pic_param->num_ref_idx_l0_active_minus1 + 1; + num_ref_l1 = pic_param->num_ref_idx_l1_active_minus1 + 1; + + if (slice_param->num_ref_idx_active_override_flag) { + num_ref_l0 = slice_param->num_ref_idx_l0_active_minus1 + 1; + num_ref_l1 = slice_param->num_ref_idx_l1_active_minus1 + 1; + } + + if (weighted_pred_idc == 2) { + /* 8.4.3 - Derivation process for prediction weights (8-279) */ + luma_log2_weight_denom = 5; + chroma_log2_weight_denom = 5; + } + } + + max_qp_n = 0; /* TODO: update it */ + max_qp_p = 0; /* TODO: update it */ + grow = 0; /* TODO: update it */ + shrink = 0; /* TODO: update it */ + + for (i = 0; i < 6; i++) + correct[i] = 0; /* TODO: update it */ + + BEGIN_BCS_BATCH(batch, 11); + + OUT_BCS_BATCH(batch, MFX_AVC_SLICE_STATE | (11 - 2) ); + OUT_BCS_BATCH(batch, slice_type); + OUT_BCS_BATCH(batch, + (num_ref_l0 << 16) | + (num_ref_l1 << 24) | + (chroma_log2_weight_denom << 8) | + (luma_log2_weight_denom << 0)); + OUT_BCS_BATCH(batch, + (weighted_pred_idc << 30) | + (slice_param->direct_spatial_mv_pred_flag << 29) | + (slice_param->disable_deblocking_filter_idc << 27) | + (slice_param->cabac_init_idc << 24) | + (slice_qp << 16) | + ((slice_param->slice_beta_offset_div2 & 0xf) << 8) | + ((slice_param->slice_alpha_c0_offset_div2 & 0xf) << 0)); + + OUT_BCS_BATCH(batch, + slice_ver_pos << 24 | + slice_hor_pos << 16 | + slice_param->macroblock_address); + OUT_BCS_BATCH(batch, + next_slice_ver_pos << 16 | + next_slice_hor_pos); + + OUT_BCS_BATCH(batch, + (0 << 31) | /* TODO: ignore it for VDENC ??? */ + (!slice_param->macroblock_address << 30) | /* ResetRateControlCounter */ + (2 << 28) | /* Loose Rate Control */ + (0 << 24) | /* RC Stable Tolerance */ + (0 << 23) | /* RC Panic Enable */ + (1 << 22) | /* CBP mode */ + (0 << 21) | /* MB Type Direct Conversion, 0: Enable, 1: Disable */ + (0 << 20) | /* MB Type Skip Conversion, 0: Enable, 1: Disable */ + (!next_slice_param << 19) | /* Is Last Slice */ + (0 << 18) | /* BitstreamOutputFlag Compressed BitStream Output Disable Flag 0:enable 1:disable */ + (1 << 17) | /* HeaderPresentFlag */ + (1 << 16) | /* SliceData PresentFlag */ + (0 << 15) | /* TailPresentFlag, TODO: check it on VDEnc */ + (1 << 13) | /* RBSP NAL TYPE */ + (1 << 12)); /* CabacZeroWordInsertionEnable */ + + OUT_BCS_BATCH(batch, vdenc_context->compressed_bitstream.start_offset); + + OUT_BCS_BATCH(batch, + (max_qp_n << 24) | /*Target QP - 24 is lowest QP*/ + (max_qp_p << 16) | /*Target QP + 20 is highest QP*/ + (shrink << 8) | + (grow << 0)); + OUT_BCS_BATCH(batch, + (1 << 31) | + (3 << 28) | + (1 << 27) | + (5 << 24) | + (correct[5] << 20) | + (correct[4] << 16) | + (correct[3] << 12) | + (correct[2] << 8) | + (correct[1] << 4) | + (correct[0] << 0)); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static uint8_t +gen9_vdenc_mfx_get_ref_idx_state(VAPictureH264 *va_pic, unsigned int frame_store_id) +{ + unsigned int is_long_term = + !!(va_pic->flags & VA_PICTURE_H264_LONG_TERM_REFERENCE); + unsigned int is_top_field = + !!(va_pic->flags & VA_PICTURE_H264_TOP_FIELD); + unsigned int is_bottom_field = + !!(va_pic->flags & VA_PICTURE_H264_BOTTOM_FIELD); + + return ((is_long_term << 6) | + ((is_top_field ^ is_bottom_field ^ 1) << 5) | + (frame_store_id << 1) | + ((is_top_field ^ 1) & is_bottom_field)); +} + +static void +gen9_vdenc_mfx_avc_ref_idx_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncSliceParameterBufferH264 *slice_param) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + VAPictureH264 *ref_pic; + int i, slice_type, ref_idx_shift; + unsigned int fwd_ref_entry; + + fwd_ref_entry = 0x80808080; + slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type); + + for (i = 0; i < MAX(vdenc_context->num_refs[0], 2); i++) { + ref_pic = &slice_param->RefPicList0[i]; + ref_idx_shift = vdenc_context->list_ref_idx[0][i] * 8; + + fwd_ref_entry &= ~(0xFF << ref_idx_shift); + fwd_ref_entry += (gen9_vdenc_mfx_get_ref_idx_state(ref_pic, vdenc_context->list_ref_idx[0][i]) << ref_idx_shift); + } + + if (slice_type == SLICE_TYPE_P) { + BEGIN_BCS_BATCH(batch, 10); + OUT_BCS_BATCH(batch, MFX_AVC_REF_IDX_STATE | 8); + OUT_BCS_BATCH(batch, 0); // L0 + OUT_BCS_BATCH(batch, fwd_ref_entry); + + for (i = 0; i < 7; i++) { + OUT_BCS_BATCH(batch, 0x80808080); + } + + ADVANCE_BCS_BATCH(batch); + } + + if (slice_type == SLICE_TYPE_B) { + /* VDEnc on SKL doesn't support BDW */ + assert(0); + } +} + +static void +gen9_vdenc_mfx_avc_weightoffset_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncPictureParameterBufferH264 *pic_param, + VAEncSliceParameterBufferH264 *slice_param) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + int i, slice_type; + short weightoffsets[32 * 6]; + + slice_type = intel_avc_enc_slice_type_fixup(slice_param->slice_type); + + if (slice_type == SLICE_TYPE_P && + pic_param->pic_fields.bits.weighted_pred_flag == 1) { + + for (i = 0; i < 32; i++) { + weightoffsets[i * 6 + 0] = slice_param->luma_weight_l0[i]; + weightoffsets[i * 6 + 1] = slice_param->luma_offset_l0[i]; + weightoffsets[i * 6 + 2] = slice_param->chroma_weight_l0[i][0]; + weightoffsets[i * 6 + 3] = slice_param->chroma_offset_l0[i][0]; + weightoffsets[i * 6 + 4] = slice_param->chroma_weight_l0[i][1]; + weightoffsets[i * 6 + 5] = slice_param->chroma_offset_l0[i][1]; + } + + BEGIN_BCS_BATCH(batch, 98); + OUT_BCS_BATCH(batch, MFX_AVC_WEIGHTOFFSET_STATE | (98 - 2)); + OUT_BCS_BATCH(batch, 0); + intel_batchbuffer_data(batch, weightoffsets, sizeof(weightoffsets)); + + ADVANCE_BCS_BATCH(batch); + } + + if (slice_type == SLICE_TYPE_B) { + /* VDEnc on SKL doesn't support BWD */ + assert(0); + } +} + +static void +gen9_vdenc_mfx_avc_single_slice(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncSliceParameterBufferH264 *slice_param, + VAEncSliceParameterBufferH264 *next_slice_param, + int slice_index) +{ + VAEncPictureParameterBufferH264 *pic_param = (VAEncPictureParameterBufferH264 *)encode_state->pic_param_ext->buffer; + + gen9_vdenc_mfx_avc_ref_idx_state(ctx, encode_state, encoder_context, slice_param); + gen9_vdenc_mfx_avc_weightoffset_state(ctx, + encode_state, + encoder_context, + pic_param, + slice_param); + gen9_vdenc_mfx_avc_slice_state(ctx, + encode_state, + encoder_context, + pic_param, + slice_param, + next_slice_param); + gen9_vdenc_mfx_avc_inset_headers(ctx, + encode_state, + encoder_context, + slice_param, + slice_index); +} + +static void +gen9_vdenc_mfx_vdenc_avc_slices(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gpe_mi_flush_dw_parameter mi_flush_dw_params; + VAEncSliceParameterBufferH264 *slice_param, *next_slice_param, *next_slice_group_param; + int i, j; + int slice_index = 0; + int is_frame_level_vdenc = 1; /* TODO: check it for SKL */ + int has_tail = 0; /* TODO: check it later */ + + for (j = 0; j < encode_state->num_slice_params_ext; j++) { + slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer; + + if (j == encode_state->num_slice_params_ext - 1) + next_slice_group_param = NULL; + else + next_slice_group_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j + 1]->buffer; + + for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) { + if (i < encode_state->slice_params_ext[j]->num_elements - 1) + next_slice_param = slice_param + 1; + else + next_slice_param = next_slice_group_param; + + gen9_vdenc_mfx_avc_single_slice(ctx, + encode_state, + encoder_context, + slice_param, + next_slice_param, + slice_index); + slice_param++; + slice_index++; + + if (is_frame_level_vdenc) + break; + else { + /* TODO: remove assert(0) and add other commands here */ + assert(0); + } + } + + if (is_frame_level_vdenc) + break; + } + + if (is_frame_level_vdenc) { + struct vd_pipeline_flush_parameter pipeline_flush_params; + + gen9_vdenc_vdenc_walker_state(ctx, encode_state, encoder_context); + + memset(&pipeline_flush_params, 0, sizeof(pipeline_flush_params)); + pipeline_flush_params.mfx_pipeline_done = !has_tail; + pipeline_flush_params.vdenc_pipeline_done = 1; + pipeline_flush_params.vdenc_pipeline_command_flush = 1; + pipeline_flush_params.vd_command_message_parser_done = 1; + gen9_vdenc_vd_pipeline_flush(ctx, encoder_context, &pipeline_flush_params); + } + + if (has_tail) { + /* TODO: insert a tail if required */ + } + + memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params)); + mi_flush_dw_params.video_pipeline_cache_invalidate = 1; + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params); +} + +static void +gen9_vdenc_mfx_vdenc_pipeline(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gpe_mi_batch_buffer_start_parameter mi_batch_buffer_start_params; + + if (vdenc_context->brc_enabled) { + struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params; + + memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params)); + mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status2_res.bo; + gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params); + } + + if (vdenc_context->current_pass) { + struct gpe_mi_conditional_batch_buffer_end_parameter mi_conditional_batch_buffer_end_params; + + memset(&mi_conditional_batch_buffer_end_params, 0, sizeof(mi_conditional_batch_buffer_end_params)); + mi_conditional_batch_buffer_end_params.bo = vdenc_context->huc_status_res.bo; + gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, &mi_conditional_batch_buffer_end_params); + } + + gen9_vdenc_mfx_pipe_mode_select(ctx, encode_state, encoder_context); + + gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->recon_surface_res, 0); + gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->uncompressed_input_surface_res, 4); + gen9_vdenc_mfx_surface_state(ctx, encoder_context, &vdenc_context->scaled_4x_recon_surface_res, 5); + + gen9_vdenc_mfx_pipe_buf_addr_state(ctx, encoder_context); + gen9_vdenc_mfx_ind_obj_base_addr_state(ctx, encoder_context); + gen9_vdenc_mfx_bsp_buf_base_addr_state(ctx, encoder_context); + + gen9_vdenc_vdenc_pipe_mode_select(ctx, encode_state, encoder_context); + gen9_vdenc_vdenc_src_surface_state(ctx, encoder_context, &vdenc_context->uncompressed_input_surface_res); + gen9_vdenc_vdenc_ref_surface_state(ctx, encoder_context, &vdenc_context->recon_surface_res); + gen9_vdenc_vdenc_ds_ref_surface_state(ctx, encoder_context, &vdenc_context->scaled_4x_recon_surface_res); + gen9_vdenc_vdenc_pipe_buf_addr_state(ctx, encode_state, encoder_context); + gen9_vdenc_vdenc_const_qpt_state(ctx, encode_state, encoder_context); + + if (!vdenc_context->brc_enabled) { + gen9_vdenc_mfx_avc_img_state(ctx, encode_state, encoder_context); + gen9_vdenc_vdenc_img_state(ctx, encode_state, encoder_context); + } else { + memset(&mi_batch_buffer_start_params, 0, sizeof(mi_batch_buffer_start_params)); + mi_batch_buffer_start_params.is_second_level = 1; /* Must be the second level batch buffer */ + mi_batch_buffer_start_params.bo = vdenc_context->second_level_batch_res.bo; + gen9_gpe_mi_batch_buffer_start(ctx, batch, &mi_batch_buffer_start_params); + } + + gen9_vdenc_mfx_avc_qm_state(ctx, encoder_context); + gen9_vdenc_mfx_avc_fqm_state(ctx, encoder_context); + + gen9_vdenc_mfx_vdenc_avc_slices(ctx, encode_state, encoder_context); +} + +static void +gen9_vdenc_context_brc_prepare(struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + unsigned int rate_control_mode = encoder_context->rate_control_mode; + + switch (rate_control_mode & 0x7f) { + case VA_RC_CBR: + vdenc_context->internal_rate_mode = I965_BRC_CBR; + break; + + case VA_RC_VBR: + vdenc_context->internal_rate_mode = I965_BRC_VBR; + break; + + case VA_RC_CQP: + default: + vdenc_context->internal_rate_mode = I965_BRC_CQP; + break; + } +} + +static void +gen9_vdenc_read_status(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gpe_mi_store_register_mem_parameter mi_store_register_mem_params; + struct gpe_mi_flush_dw_parameter mi_flush_dw_params; + unsigned int base_offset = vdenc_context->status_bffuer.base_offset; + int i; + + memset(&mi_flush_dw_params, 0, sizeof(mi_flush_dw_params)); + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_params); + + memset(&mi_store_register_mem_params, 0, sizeof(mi_store_register_mem_params)); + mi_store_register_mem_params.mmio_offset = MFC_BITSTREAM_BYTECOUNT_FRAME_REG; /* TODO: fix it if VDBOX2 is used */ + mi_store_register_mem_params.bo = vdenc_context->status_bffuer.res.bo; + mi_store_register_mem_params.offset = base_offset + vdenc_context->status_bffuer.bytes_per_frame_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params); + + /* Update DMEM buffer for BRC Update */ + for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++) { + mi_store_register_mem_params.mmio_offset = MFC_BITSTREAM_BYTECOUNT_FRAME_REG; /* TODO: fix it if VDBOX2 is used */ + mi_store_register_mem_params.bo = vdenc_context->brc_update_dmem_res[i].bo; + mi_store_register_mem_params.offset = 5 * sizeof(uint32_t); + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params); + + mi_store_register_mem_params.mmio_offset = MFC_IMAGE_STATUS_CTRL_REG; /* TODO: fix it if VDBOX2 is used */ + mi_store_register_mem_params.bo = vdenc_context->brc_update_dmem_res[i].bo; + mi_store_register_mem_params.offset = 7 * sizeof(uint32_t); + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_register_mem_params); + } +} + +static VAStatus +gen9_vdenc_avc_check_capability(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + VAEncSliceParameterBufferH264 *slice_param; + int i, j; + + for (j = 0; j < encode_state->num_slice_params_ext; j++) { + slice_param = (VAEncSliceParameterBufferH264 *)encode_state->slice_params_ext[j]->buffer; + + for (i = 0; i < encode_state->slice_params_ext[j]->num_elements; i++) { + if (slice_param->slice_type == SLICE_TYPE_B) + return VA_STATUS_ERROR_UNKNOWN; + + slice_param++; + } + } + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vdenc_avc_encode_picture(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + VAStatus va_status; + struct gen9_vdenc_context *vdenc_context = encoder_context->mfc_context; + struct intel_batchbuffer *batch = encoder_context->base.batch; + + va_status = gen9_vdenc_avc_check_capability(ctx, encode_state, encoder_context); + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + gen9_vdenc_avc_prepare(ctx, profile, encode_state, encoder_context); + + for (vdenc_context->current_pass = 0; vdenc_context->current_pass < vdenc_context->num_passes; vdenc_context->current_pass++) { + vdenc_context->is_first_pass = (vdenc_context->current_pass == 0); + vdenc_context->is_last_pass = (vdenc_context->current_pass == (vdenc_context->num_passes - 1)); + + intel_batchbuffer_start_atomic_bcs(batch, 0x1000); + intel_batchbuffer_emit_mi_flush(batch); + + if (vdenc_context->brc_enabled) { + if (!vdenc_context->brc_initted || vdenc_context->brc_need_reset) + gen9_vdenc_huc_brc_init_reset(ctx, encode_state, encoder_context); + + gen9_vdenc_huc_brc_update(ctx, encode_state, encoder_context); + intel_batchbuffer_emit_mi_flush(batch); + } + + gen9_vdenc_mfx_vdenc_pipeline(ctx, encode_state, encoder_context); + gen9_vdenc_read_status(ctx, encoder_context); + + intel_batchbuffer_end_atomic(batch); + intel_batchbuffer_flush(batch); + + vdenc_context->brc_initted = 1; + vdenc_context->brc_need_reset = 0; + } + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vdenc_pipeline(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + VAStatus vaStatus; + + switch (profile) { + case VAProfileH264ConstrainedBaseline: + case VAProfileH264Main: + case VAProfileH264High: + vaStatus = gen9_vdenc_avc_encode_picture(ctx, profile, encode_state, encoder_context); + break; + + default: + vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE; + break; + } + + return vaStatus; +} + +static void +gen9_vdenc_free_resources(struct gen9_vdenc_context *vdenc_context) +{ + int i; + + i965_free_gpe_resource(&vdenc_context->brc_init_reset_dmem_res); + i965_free_gpe_resource(&vdenc_context->brc_history_buffer_res); + i965_free_gpe_resource(&vdenc_context->brc_stream_in_res); + i965_free_gpe_resource(&vdenc_context->brc_stream_out_res); + i965_free_gpe_resource(&vdenc_context->huc_dummy_res); + + for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++) + i965_free_gpe_resource(&vdenc_context->brc_update_dmem_res[i]); + + i965_free_gpe_resource(&vdenc_context->vdenc_statistics_res); + i965_free_gpe_resource(&vdenc_context->pak_statistics_res); + i965_free_gpe_resource(&vdenc_context->vdenc_avc_image_state_res); + i965_free_gpe_resource(&vdenc_context->hme_detection_summary_buffer_res); + i965_free_gpe_resource(&vdenc_context->brc_constant_data_res); + i965_free_gpe_resource(&vdenc_context->second_level_batch_res); + + i965_free_gpe_resource(&vdenc_context->huc_status_res); + i965_free_gpe_resource(&vdenc_context->huc_status2_res); + + i965_free_gpe_resource(&vdenc_context->recon_surface_res); + i965_free_gpe_resource(&vdenc_context->scaled_4x_recon_surface_res); + i965_free_gpe_resource(&vdenc_context->post_deblocking_output_res); + i965_free_gpe_resource(&vdenc_context->pre_deblocking_output_res); + + for (i = 0; i < ARRAY_ELEMS(vdenc_context->list_reference_res); i++) { + i965_free_gpe_resource(&vdenc_context->list_reference_res[i]); + i965_free_gpe_resource(&vdenc_context->list_scaled_4x_reference_res[i]); + } + + i965_free_gpe_resource(&vdenc_context->uncompressed_input_surface_res); + i965_free_gpe_resource(&vdenc_context->compressed_bitstream.res); + i965_free_gpe_resource(&vdenc_context->status_bffuer.res); + + i965_free_gpe_resource(&vdenc_context->mfx_intra_row_store_scratch_res); + i965_free_gpe_resource(&vdenc_context->mfx_deblocking_filter_row_store_scratch_res); + i965_free_gpe_resource(&vdenc_context->mfx_bsd_mpc_row_store_scratch_res); + i965_free_gpe_resource(&vdenc_context->vdenc_row_store_scratch_res); + + i965_free_gpe_resource(&vdenc_context->vdenc_streamin_res); +} + +static void +gen9_vdenc_context_destroy(void *context) +{ + struct gen9_vdenc_context *vdenc_context = context; + + gen9_vdenc_free_resources(vdenc_context); + + free(vdenc_context); +} + +static void +gen9_vdenc_allocate_resources(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct gen9_vdenc_context *vdenc_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + int i; + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_init_reset_dmem_res, + ALIGN(sizeof(struct huc_brc_init_dmem), 64), + "HuC Init&Reset DMEM buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_history_buffer_res, + ALIGN(HUC_BRC_HISTORY_BUFFER_SIZE, 0x1000), + "HuC History buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_stream_in_res, + ALIGN(HUC_BRC_STREAM_INOUT_BUFFER_SIZE, 0x1000), + "HuC Stream In buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_stream_out_res, + ALIGN(HUC_BRC_STREAM_INOUT_BUFFER_SIZE, 0x1000), + "HuC Stream Out buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_dummy_res, + 0x1000, + "HuC dummy buffer"); + + for (i = 0; i < NUM_OF_BRC_PAK_PASSES; i++) { + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_update_dmem_res[i], + ALIGN(sizeof(struct huc_brc_update_dmem), 64), + "HuC BRC Update buffer"); + i965_zero_gpe_resource(&vdenc_context->brc_update_dmem_res[i]); + } + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_statistics_res, + ALIGN(VDENC_STATISTICS_SIZE, 0x1000), + "VDENC statistics buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->pak_statistics_res, + ALIGN(PAK_STATISTICS_SIZE, 0x1000), + "PAK statistics buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->vdenc_avc_image_state_res, + ALIGN(VDENC_AVC_IMAGE_STATE_SIZE, 0x1000), + "VDENC/AVC image state buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->hme_detection_summary_buffer_res, + ALIGN(HME_DETECTION_SUMMARY_BUFFER_SIZE, 0x1000), + "HME summary buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->brc_constant_data_res, + ALIGN(BRC_CONSTANT_DATA_SIZE, 0x1000), + "BRC constant buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->second_level_batch_res, + ALIGN(VDENC_AVC_IMAGE_STATE_SIZE, 0x1000), + "Second level batch buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_status_res, + 0x1000, + "HuC Status buffer"); + + ALLOC_VDENC_BUFFER_RESOURCE(vdenc_context->huc_status2_res, + 0x1000, + "HuC Status buffer"); +} + +static VAStatus +gen9_vdenc_context_get_status(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_coded_buffer_segment *coded_buffer_segment) +{ + struct gen9_vdenc_status *vdenc_status = (struct gen9_vdenc_status *)coded_buffer_segment->codec_private_data; + + coded_buffer_segment->base.size = vdenc_status->bytes_per_frame; + + return VA_STATUS_SUCCESS; +} + +Bool +gen9_vdenc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_vdenc_context *vdenc_context = calloc(1, sizeof(struct gen9_vdenc_context)); + + if (!vdenc_context) + return False; + + vdenc_context->brc_initted = 0; + vdenc_context->brc_need_reset = 0; + vdenc_context->is_low_delay = 0; + vdenc_context->current_pass = 0; + vdenc_context->num_passes = 1; + vdenc_context->vdenc_streamin_enable = 0; + vdenc_context->vdenc_pak_threshold_check_enable = 0; + + gen9_vdenc_allocate_resources(ctx, encoder_context, vdenc_context); + + encoder_context->mfc_context = vdenc_context; + encoder_context->mfc_context_destroy = gen9_vdenc_context_destroy; + encoder_context->mfc_pipeline = gen9_vdenc_pipeline; + encoder_context->mfc_brc_prepare = gen9_vdenc_context_brc_prepare; + encoder_context->get_status = gen9_vdenc_context_get_status; + + return True; +} diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vdenc.h intel-vaapi-driver-1.7.1/src/gen9_vdenc.h --- intel-vaapi-driver-1.6.2/src/gen9_vdenc.h 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vdenc.h 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,908 @@ +/* + * Copyright © 2015 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Xiang Haihao + * + */ + +#ifndef GEN9_VDENC_H +#define GEN9_VDENC_H + +#include +#include +#include + +#include "i965_gpe_utils.h" +#include "i965_encoder.h" + +struct encode_state; + +#define HUC_BRC_INIT_RESET 4 +#define HUC_BRC_UPDATE 5 + +#define HUC_DMEM_DATA_OFFSET 0x2000 + +#define NUM_OF_BRC_PAK_PASSES 2 + +#define HUC_BRC_HISTORY_BUFFER_SIZE 832 +#define HUC_BRC_STREAM_INOUT_BUFFER_SIZE 4096 +#define VDENC_STATISTICS_SIZE 128 +#define PAK_STATISTICS_SIZE 256 +#define VDENC_AVC_IMAGE_STATE_SIZE (sizeof(struct gen9_mfx_avc_img_state) + sizeof(struct gen9_vdenc_img_state) + 2 * sizeof(int)) +#define HME_DETECTION_SUMMARY_BUFFER_SIZE 256 +#define BRC_CONSTANT_DATA_SIZE 4096 +#define BRC_DEBUG_OUTPUT_SIZE 4096 + +#define HUC_STATUS_MMIO_OFFSET 0x0D000 + +#define SCALE_FACTOR_4X 4 + +#define VDENC_FRAME_I 0 +#define VDENC_FRAME_P 1 + +#define VDENC_LUTMODE_INTRA_NONPRED 0x00 +#define VDENC_LUTMODE_INTRA 0x01 +#define VDENC_LUTMODE_INTRA_16x16 0x01 +#define VDENC_LUTMODE_INTRA_8x8 0x02 +#define VDENC_LUTMODE_INTRA_4x4 0x03 +#define VDENC_LUTMODE_INTER_16x8 0x04 +#define VDENC_LUTMODE_INTER_8x16 0x04 +#define VDENC_LUTMODE_INTER_8X8Q 0x05 +#define VDENC_LUTMODE_INTER_8X4Q 0x06 +#define VDENC_LUTMODE_INTER_4X8Q 0x06 +#define VDENC_LUTMODE_INTER_16x8_FIELD 0x06 +#define VDENC_LUTMODE_INTER_4X4Q 0x07 +#define VDENC_LUTMODE_INTER_8x8_FIELD 0x07 +#define VDENC_LUTMODE_INTER 0x08 +#define VDENC_LUTMODE_INTER_16x16 0x08 +#define VDENC_LUTMODE_INTER_BWD 0x09 +#define VDENC_LUTMODE_REF_ID 0x0A +#define VDENC_LUTMODE_INTRA_CHROMA 0x0B + +#define WIDTH_IN_MACROBLOCKS(width) (ALIGN(width, 16) >> 4) +#define HEIGHT_IN_MACROBLOCKS(height) (ALIGN(height, 16) >> 4) + +struct gen9_mfx_avc_img_state +{ + union { + struct { + uint32_t dword_length:16; + uint32_t sub_opcode_b:5; + uint32_t sub_opcode_a:3; + uint32_t command_opcode:3; + uint32_t pipeline:2; + uint32_t command_type:3; + }; + + uint32_t value; + } dw0; + + struct { + uint32_t frame_size_in_mbs_minus1:16; + uint32_t pad0:16; + } dw1; + + struct { + uint32_t frame_width_in_mbs_minus1:8; + uint32_t pad0:8; + uint32_t frame_height_in_mbs_minus1:8; + uint32_t pad1:8; + } dw2; + + struct { + uint32_t pad0:8; + uint32_t image_structure:2; + uint32_t weighted_bipred_idc:2; + uint32_t weighted_pred_flag:1; + uint32_t brc_domain_rate_control_enable:1; + uint32_t pad1:2; + uint32_t chroma_qp_offset:5; + uint32_t pad2:3; + uint32_t second_chroma_qp_offset:5; + uint32_t pad3:3; + } dw3; + + struct { + uint32_t field_picture_flag:1; + uint32_t mbaff_mode_active:1; + uint32_t frame_mb_only_flag:1; + uint32_t transform_8x8_idct_mode_flag:1; + uint32_t direct_8x8_interface_flag:1; + uint32_t constrained_intra_prediction_flag:1; + uint32_t current_img_dispoable_flag:1; + uint32_t entropy_coding_flag:1; + uint32_t mb_mv_format_flag:1; + uint32_t pad0:1; + uint32_t chroma_format_idc:2; + uint32_t mv_unpacked_flag:1; + uint32_t insert_test_flag:1; + uint32_t load_slice_pointer_flag:1; + uint32_t macroblock_stat_enable:1; + uint32_t minimum_frame_size:16; + } dw4; + + struct { + uint32_t intra_mb_max_bit_flag:1; + uint32_t inter_mb_max_bit_flag:1; + uint32_t frame_size_over_flag:1; + uint32_t frame_size_under_flag:1; + uint32_t pad0:3; + uint32_t intra_mb_ipcm_flag:1; + uint32_t pad1:1; + uint32_t mb_rate_ctrl_flag:1; + uint32_t min_frame_size_units:2; + uint32_t inter_mb_zero_cbp_flag:1; + uint32_t pad2:3; + uint32_t non_first_pass_flag:1; + uint32_t pad3:10; + uint32_t aq_chroma_disable:1; + uint32_t aq_rounding:3; + uint32_t aq_enable:1; + } dw5; + + struct { + uint32_t intra_mb_max_size:12; + uint32_t pad0:4; + uint32_t inter_mb_max_size:12; + uint32_t pad1:4; + } dw6; + + struct { + uint32_t pad0; + } dw7; + + struct { + uint32_t slice_delta_qp_max0:8; + uint32_t slice_delta_qp_max1:8; + uint32_t slice_delta_qp_max2:8; + uint32_t slice_delta_qp_max3:8; + } dw8; + + struct { + uint32_t slice_delta_qp_min0:8; + uint32_t slice_delta_qp_min1:8; + uint32_t slice_delta_qp_min2:8; + uint32_t slice_delta_qp_min3:8; + } dw9; + + struct { + uint32_t frame_bitrate_min:14; + uint32_t frame_bitrate_min_unit_mode:1; + uint32_t frame_bitrate_min_unit:1; + uint32_t frame_bitrate_max:14; + uint32_t frame_bitrate_max_unit_mode:1; + uint32_t frame_bitrate_max_unit:1; + } dw10; + + struct { + uint32_t frame_bitrate_min_delta:15; + uint32_t pad0:1; + uint32_t frame_bitrate_max_delta:15; + uint32_t pad1:1; + } dw11; + + struct { + uint32_t pad0:18; + uint32_t vad_error_logic:1; + uint32_t pad1:13; + } dw12; + + struct { + uint32_t pic_qp_init_minus26:8; + uint32_t pic_num_ref_idx_l0_active_minus1:6; + uint32_t pad0:2; + uint32_t pic_num_ref_idx_l1_active_minus1:6; + uint32_t pad1:2; + uint32_t num_ref_frames:5; + uint32_t is_curr_pic_has_mmco5:1; + } dw13; + + struct { + uint32_t pic_order_present_flag:1; + uint32_t delta_pic_order_always_zero_flag:1; + uint32_t pic_order_cnt_type:2; + uint32_t pad0:4; + uint32_t slice_group_map_type:3; + uint32_t redundant_pic_cnt_present_flag:1; + uint32_t num_slice_groups_minus1:3; + uint32_t deblock_filter_ctrl_present_flag:1; + uint32_t log2_max_frame_num_minus4:8; + uint32_t log2_max_pic_order_cnt_lsb_minus4:8; + } dw14; + + struct { + uint32_t slice_group_change_rate:16; + uint32_t curr_pic_frame_num:16; + } dw15; + + struct { + uint32_t current_frame_view_id:10; + uint32_t pad0:2; + uint32_t max_view_idx_l0:4; + uint32_t pad1:2; + uint32_t max_view_idx_l1:4; + uint32_t pad2:9; + uint32_t inter_view_order_disable:1; + } dw16; + + struct { + uint32_t fqp:3; // Must be zero for SKL + uint32_t fqp_offset:3; // Must be zero for SKL + uint32_t pad0:2; + uint32_t ext_brc_dm_stat_en:1; // Must be zero for SKL + uint32_t pad1:7; + uint32_t brc_dm_avg_mb_qp:6; // Must be zero for SKL + uint32_t pad2:10; + } dw17; + + struct { + uint32_t brc_domain_target_frame_size; + } dw18; + + struct { + uint32_t threshold_size_in_bytes; + } dw19; + + struct { + uint32_t target_slice_size_in_bytes; + } dw20; +}; + +struct gen9_image_state_cost +{ + struct { + uint32_t mv0_cost:8; + uint32_t mv1_cost:8; + uint32_t mv2_cost:8; + uint32_t mv3_cost:8; + } dw0; + + struct { + uint32_t mv4_cost:8; + uint32_t mv5_cost:8; + uint32_t mv6_cost:8; + uint32_t mv7_cost:8; + } dw1; +}; + +struct gen9_vdenc_img_state +{ + union { + struct { + uint32_t dword_length:12; + uint32_t pad0:4; + uint32_t sub_opcode_b:5; + uint32_t sub_opcode_a:2; + uint32_t command_opcode:4; + uint32_t pipeline:2; + uint32_t command_type:3; + }; + + uint32_t value; + } dw0; + + struct { + uint32_t pad0:2; + uint32_t bidirectional_mix_disable:1; + uint32_t pad1:1; + uint32_t time_budget_overflow_check:1; + uint32_t pad2:2; + uint32_t transform_8x8_flag:1; + uint32_t vdenc_l1_cache_priority:2; + uint32_t pad3:22; + } dw1; + + struct { + uint32_t pad0:16; + uint32_t bidirectional_weight:6; + uint32_t pad1:6; + uint32_t unidirection_mix_disable:1; + uint32_t pad2:3; + } dw2; + + struct { + uint32_t pad0:16; + uint32_t picture_width:16; + } dw3; + + struct { + uint32_t pad0:12; + uint32_t subpel_mode:2; + uint32_t pad1:3; + uint32_t forward_transform_skip_check_enable:1; + uint32_t bme_disable_for_fbr_message:1; + uint32_t block_based_skip_enabled:1; + uint32_t inter_sad_measure_adjustment:2; + uint32_t intra_sad_measure_adjustment:2; + uint32_t sub_macroblock_sub_partition_mask:7; + uint32_t block_based_skip_type:1; + } dw4; + + struct { + uint32_t picture_height_minus1:16; + uint32_t cre_prefetch_enable:1; + uint32_t hme_ref1_disable:1; + uint32_t mb_slice_threshold_value:4; + uint32_t pad0:4; + uint32_t constrained_intra_prediction_flag:1; + uint32_t pad1:2; + uint32_t picture_type:2; + uint32_t pad2:1; + } dw5; + + struct { + uint32_t slice_macroblock_height_minus1:16; + uint32_t pad0:16; + } dw6; + + struct { + uint32_t pad0; + } dw7; + + struct { + uint32_t luma_intra_partition_mask:5; + uint32_t non_skip_zero_mv_const_added:1; + uint32_t non_skip_mb_mode_const_added:1; + uint32_t pad0:9; + uint32_t mv_cost_scaling_factor:2; + uint32_t bilinear_filter_enable:1; + uint32_t pad1:3; + uint32_t ref_id_cost_mode_select:1; + uint32_t pad2:9; + } dw8; + + struct { + uint32_t mode0_cost:8; + uint32_t mode1_cost:8; + uint32_t mode2_cost:8; + uint32_t mode3_cost:8; + } dw9; + + struct { + uint32_t mode4_cost:8; + uint32_t mode5_cost:8; + uint32_t mode6_cost:8; + uint32_t mode7_cost:8; + } dw10; + + struct { + uint32_t mode8_cost:8; + uint32_t mode9_cost:8; + uint32_t ref_id_cost:8; + uint32_t chroma_intra_mode_cost:8; + } dw11; + + struct { + struct gen9_image_state_cost mv_cost; + } dw12_13; + + struct { + uint32_t qp_prime_y:8; + uint32_t pad0:16; + uint32_t target_size_in_word:8; + } dw14; + + struct { + uint32_t pad0; + } dw15; + + struct { + uint32_t pad0; + } dw16; + + struct { + uint32_t avc_intra_4x4_mode_mask:9; + uint32_t pad0:7; + uint32_t avc_intra_8x8_mode_mask:9; + uint32_t pad1:7; + } dw17; + + struct { + uint32_t avc_intra_16x16_mode_mask:4; + uint32_t avc_intra_chroma_mode_mask:4; + uint32_t intra_compute_type_intra_compute_type:2; + uint32_t pad0:22; + } dw18; + + struct { + uint32_t pad0; + } dw19; + + struct { + uint32_t penalty_for_intra_16x16_non_dc_prediction:8; + uint32_t penalty_for_intra_8x8_non_dc_prediction:8; + uint32_t penalty_for_intra_4x4_non_dc_prediction:8; + uint32_t pad0:8; + } dw20; + + struct { + uint32_t pad0; + } dw21; + + struct { + uint32_t panic_mode_mb_threadhold:16; + uint32_t small_mb_size_in_word:8; + uint32_t large_mb_size_in_word:8; + } dw22; + + struct { + uint32_t l0_number_of_reference_minus1:8; + uint32_t pad0:8; + uint32_t l1_number_of_reference_minus1:8; + uint32_t pad1:8; + } dw23; + + struct { + uint32_t pad0; + } dw24; + + struct { + uint32_t pad0; + } dw25; + + struct { + uint32_t pad0:8; + uint32_t hme_ref_windows_combining_threshold:8; + uint32_t pad1:16; + } dw26; + + struct { + uint32_t max_hmv_r:16; + uint32_t max_vmv_r:16; + } dw27; + + struct { + struct gen9_image_state_cost hme_mv_cost; + } dw28_29; + + struct { + uint32_t roi_qp_adjustment_for_zone0:4; + uint32_t roi_qp_adjustment_for_zone1:4; + uint32_t roi_qp_adjustment_for_zone2:4; + uint32_t roi_qp_adjustment_for_zone3:4; + uint32_t qp_adjustment_for_shape_best_intra_4x4_winner:4; + uint32_t qp_adjustment_for_shape_best_intra_8x8_winner:4; + uint32_t qp_adjustment_for_shape_best_intra_16x16_winner:4; + uint32_t pad0:4; + } dw30; + + struct { + uint32_t best_distortion_qp_adjustment_for_zone0:4; + uint32_t best_distortion_qp_adjustment_for_zone1:4; + uint32_t best_distortion_qp_adjustment_for_zone2:4; + uint32_t best_distortion_qp_adjustment_for_zone3:4; + uint32_t offset0_for_zone0_neg_zone1_boundary:16; + } dw31; + + struct { + uint32_t offset1_for_zone1_neg_zone2_boundary:16; + uint32_t offset2_for_zone2_neg_zone3_boundary:16; + } dw32; + + struct { + uint32_t qp_range_check_upper_bound:8; + uint32_t qp_range_check_lower_bound:8; + uint32_t pad0:8; + uint32_t qp_range_check_value:4; + uint32_t pad1:4; + } dw33; + + struct { + uint32_t roi_enable:1; + uint32_t fwd_predictor0_mv_enable:1; + uint32_t bdw_predictor1_mv_enable:1; + uint32_t mb_level_qp_enable:1; + uint32_t target_size_in_words_mb_max_size_in_words_mb_enable:1; + uint32_t pad0:3; + uint32_t ppmv_disable:1; + uint32_t coefficient_clamp_enable:1; + uint32_t long_term_reference_frame_bwd_ref0_indicator:1; + uint32_t long_term_reference_frame_fwd_ref2_indicator:1; + uint32_t long_term_reference_frame_fwd_ref1_indicator:1; + uint32_t long_term_reference_frame_fwd_ref0_indicator:1; + uint32_t image_state_qp_override:1; + uint32_t pad1:1; + uint32_t midpoint_distortion:16; + } dw34; +}; + +struct gen9_vdenc_streamin_state +{ + struct { + uint32_t roi_selection:8; + uint32_t force_intra:1; + uint32_t force_skip:1; + uint32_t pad0:22; + } dw0; + + struct { + uint32_t qp_prime_y:8; + uint32_t target_size_in_word:8; + uint32_t max_size_in_word:8; + uint32_t pad0:8; + } dw1; + + struct { + uint32_t fwd_predictor_x:16; + uint32_t fwd_predictor_y:16; + } dw2; + + struct { + uint32_t bwd_predictore_x:16; + uint32_t bwd_predictore_y:16; + } dw3; + + struct { + uint32_t fwd_ref_id0:4; + uint32_t bdw_ref_id0:4; + uint32_t pad0:24; + } dw4; + + struct { + uint32_t pad0[11]; + } dw5_15; +}; + +struct huc_brc_update_constant_data +{ + uint8_t global_rate_qp_adj_tab_i[64]; + uint8_t global_rate_qp_adj_tab_p[64]; + uint8_t global_rate_qp_adj_tab_b[64]; + uint8_t dist_threshld_i[10]; + uint8_t dist_threshld_p[10]; + uint8_t dist_threshld_b[10]; + uint8_t dist_qp_adj_tab_i[81]; + uint8_t dist_qp_adj_tab_p[81]; + uint8_t dist_qp_adj_tab_b[81]; + int8_t buf_rate_adj_tab_i[72]; + int8_t buf_rate_adj_tab_p[72]; + int8_t buf_rate_adj_tab_b[72]; + uint8_t frame_size_min_tab_p[9]; + uint8_t frame_size_min_tab_b[9]; + uint8_t frame_size_min_tab_i[9]; + uint8_t frame_size_max_tab_p[9]; + uint8_t frame_size_max_tab_b[9]; + uint8_t frame_size_max_tab_i[9]; + uint8_t frame_size_scg_tab_p[9]; + uint8_t frame_size_scg_tab_b[9]; + uint8_t frame_size_scg_tab_i[9]; + /* cost table 14*42 = 588 bytes */ + uint8_t i_intra_non_pred[42]; + uint8_t i_intra_16x16[42]; + uint8_t i_intra_8x8[42]; + uint8_t i_intra_4x4[42]; + uint8_t i_intra_chroma[42]; + uint8_t p_intra_non_pred[42]; + uint8_t p_intra_16x16[42]; + uint8_t p_intra_8x8[42]; + uint8_t p_intra_4x4[42]; + uint8_t p_intra_chroma[42]; + uint8_t p_inter_16x8[42]; + uint8_t p_inter_8x8[42]; + uint8_t p_inter_16x16[42]; + uint8_t p_ref_id[42]; + uint8_t hme_mv_cost[8][42]; + uint8_t pad0[42]; +}; + +struct huc_brc_init_dmem +{ + uint8_t brc_func; // 0: Init; 2: Reset + uint8_t os_enabled; // Always 1 + uint8_t pad0[2]; + uint16_t brc_flag; // ICQ or CQP with slice size control: 0x00 CBR: 0x10; VBR: 0x20; VCM: 0x40; LOWDELAY: 0x80. + uint16_t pad1; + uint16_t frame_width; // Luma width in bytes + uint16_t frame_height; // Luma height in bytes + uint32_t target_bitrate; // target bitrate, set by application + uint32_t min_rate; // 0 + uint32_t max_rate; // Maximum bit rate in bits per second (bps). + uint32_t buffer_size; // buffer size in bits + uint32_t init_buffer_fullness; // initial buffer fullness in bits + uint32_t profile_level_max_frame; // user defined. refer to AVC BRC HLD for conformance check and correction + uint32_t frame_rate_m; // FrameRateM is the number of frames in FrameRateD + uint32_t frame_rate_d; // If driver gets this FrameRateD from VUI, it is the num_units_in_tick field (32 bits UINT). + uint16_t num_p_in_gop; // number of P frames in a GOP + uint16_t num_b_in_gop; // number of B frames in a GOP + uint16_t min_qp; // 10 + uint16_t max_qp; // 51 + int8_t dev_thresh_pb0[8]; // lowdelay ? (-45, -33, -23, -15, -8, 0, 15, 25) : (-46, -38, -30, -23, 23, 30, 40, 46) + int8_t dev_thresh_vbr0[8]; // lowdelay ? (-45, -35, -25, -15, -8, 0, 20, 40) : (-46, -40, -32, -23, 56, 64, 83, 93) + int8_t dev_thresh_i0[8]; // lowdelay ? (-40, -30, -17, -10, -5, 0, 10, 20) : (-43, -36, -25, -18, 18, 28, 38, 46) + uint8_t init_qp_ip; // Initial QP for I and P + + uint8_t pad2; // Reserved + uint8_t init_qp_b; // Initial QP for B + uint8_t mb_qp_ctrl; // Enable MB level QP control (global) + uint8_t slice_size_ctrl_en; // Enable slice size control + int8_t intra_qp_delta[3]; // set to zero for all by default + int8_t skip_qp_delta; // Reserved + int8_t dist_qp_delta[4]; // lowdelay ? (-5, -2, 2, 5) : (0, 0, 0, 0) + uint8_t oscillation_qp_delta; // BRCFLAG_ISVCM ? 16 : 0 + uint8_t first_iframe_no_hrd_check; // BRCFLAG_ISVCM ? 1 : 0 + uint8_t skip_frame_enable_flag; + uint8_t top_qp_delta_thr_for_2nd_pass; // =1. QP Delta threshold for second pass. + uint8_t top_frame_size_threshold_for_2nd_pass; // lowdelay ? 10 : 50. Top frame size threshold for second pass + uint8_t bottom_frame_size_threshold_for_2nd_pass; // lowdelay ? 10 : 200. Bottom frame size threshold for second pass + uint8_t qp_select_for_first_pass; // lowdelay ? 0 : 1. =0 to use previous frame final QP; or =1 to use (targetQP + previousQP) / 2. + uint8_t mb_header_compensation; // Reserved + uint8_t over_shoot_carry_flag; // set to zero by default + uint8_t over_shoot_skip_frame_pct; // set to zero by default + uint8_t estrate_thresh_p0[7]; // 4, 8, 12, 16, 20, 24, 28 + uint8_t estrate_thresh_b0[7]; // 4, 8, 12, 16, 20, 24, 28 + uint8_t estrate_thresh_i0[7]; // 4, 8, 12, 16, 20, 24, 28 + uint8_t fqp_enable; // ExtendedBrcDomainEn + uint8_t scenario_info; // 0: UNKNOWN, 1: DISPLAYREMOTING, 2: VIDEOCONFERENCE, 3: ARCHIVE, 4: LIVESTREAMING. + uint8_t static_Region_streamin; // should be programmed from par file + uint8_t delta_qp_adaptation; // =1, + uint8_t max_crf_quality_factor; // =52, + uint8_t crf_quality_factor; // =25, + uint8_t bottom_qp_delta_thr_for_2nd_pass;// =1. QP Delta threshold for second pass. + uint8_t sliding_window_size; // =30, the window size (in frames) used to compute bit rate + uint8_t sliding_widow_rc_enable; // =0, sliding window based rate control (SWRC) disabled, 1: enabled + uint8_t sliding_window_max_rate_ratio; // =120, ratio between the max rate within the window and average target bitrate + uint8_t low_delay_golden_frame_boost; // only for lowdelay mode, 0 (default): no boost for I and scene change frames, 1: boost + uint8_t pad3[61]; // Must be zero +}; + +struct huc_brc_update_dmem +{ + uint8_t brc_func; // =1 for Update, other values are reserved for future use + uint8_t pad0[3]; + uint32_t target_size; // refer to AVC BRC HLD for calculation + uint32_t frame_number; // frame number + uint32_t peak_tx_bits_per_frame; // current global target bits - previous global target bits (global target bits += input bits per frame) + uint32_t frame_budget; // target time counter + uint32_t frame_byte_count; // PAK output via MMIO + uint32_t timing_budget_overflow; // PAK output via MMIO + uint32_t slice_size_violation; // PAK output via MMIO + uint32_t ipcm_non_conformant; // PAK output via MMIO + + uint16_t start_global_adjust_frame[4]; // 10, 50, 100, 150 + uint16_t mb_budget[52]; // MB bugdet for QP 0 - 51. + uint16_t target_slice_size; // target slice size + uint16_t slcsz_thr_deltai[42]; // slice size threshold delta for I frame + uint16_t slcsz_thr_deltap[42]; // slice size threshold delta for P frame + uint16_t num_of_frames_skipped; // Recording how many frames have been skipped. + uint16_t skip_frame_size; // Recording the skip frame size for one frame. =NumMBs * 1, assuming one bit per mb for skip frame. + uint16_t static_region_pct; // One entry, recording the percentage of static region + uint8_t global_rate_ratio_threshold[7]; // 80,95,99,101,105,125,160 + uint8_t current_frame_type; // I frame: 2; P frame: 0; B frame: 1. + uint8_t start_global_adjust_mult[5]; // 1, 1, 3, 2, 1 + uint8_t start_global_adjust_div[5]; // 40, 5, 5, 3, 1 + uint8_t global_rate_ratio_threshold_qp[8]; // 253,254,255,0,1,1,2,3 + uint8_t current_pak_pass; // current pak pass number + uint8_t max_num_passes; // 2 + uint8_t scene_change_width[2]; // set both to MIN((NumP + 1) / 5, 6) + uint8_t scene_change_detect_enable; // Enable scene change detection + uint8_t scene_change_prev_intra_percent_threshold; // =96. scene change previous intra percentage threshold + uint8_t scene_change_cur_intra_perent_threshold; // =192. scene change current intra percentage threshold + uint8_t ip_average_coeff; // lowdelay ? 0 : 128 + uint8_t min_qp_adjustment; // Minimum QP increase step + uint8_t timing_budget_check; // Flag indicating if kernel will check timing budget. + int8_t roi_qp_delta_i8[4]; // Application specified ROI QP Adjustment for Zone0, Zone1, Zone2 and Zone3. + uint8_t cqp_qp_value; // Application specified target QP in BRC_ICQ mode + uint8_t cqp_fqp; // Application specified fine position in BRC_ICQ mode + uint8_t hme_detection_enable; // 0: default, 1: HuC BRC kernel requires information from HME detection kernel output + uint8_t hme_cost_enable; // 0: default, 1: driver provides HME cost table + uint8_t disable_pframe_8x8_transform; + uint8_t skl_cabac_wa_enable; + uint8_t roi_source; // =0: disable, 1: ROIMap from HME Static Region or from App dirty rectangle, 2: ROIMap from App + uint8_t slice_size_consertative_threshold; // =0, 0: do not set conservative threshold (suggested for video conference) 1: set conservative threshold for non-video conference + uint16_t max_target_slice_size; // default: 1498, max target slice size from app DDI + uint16_t max_num_slice_allowed; // computed by driver based on level idc + uint16_t second_level_batchbuffer_size; // second level batch buffer (SLBB) size in bytes, the input buffer will contain two SLBBs A and B, A followed by B, A and B have the same structure. + uint16_t second_level_batchbuffer_b_offset; // offset in bytes from the beginning of the input buffer, it points to the start of SLBB B, set by driver for skip frame support + uint16_t avc_img_state_offset; // offset in bytes from the beginning of SLBB A + + /* HME distortion based QP adjustment */ + uint16_t ave_hme_dist; + uint8_t hme_dist_available; // 0: disabled, 1: enabled + + uint8_t pad1[63]; +}; + +struct gen9_vdenc_status +{ + uint32_t bytes_per_frame; +}; + +struct gen9_vdenc_context +{ + uint32_t frame_width_in_mbs; + uint32_t frame_height_in_mbs; + uint32_t frame_width; // frame_width_in_mbs * 16 + uint32_t frame_height; // frame_height_in_mbs * 16 + uint32_t down_scaled_width_in_mb4x; + uint32_t down_scaled_height_in_mb4x; + uint32_t down_scaled_width_4x; // down_scaled_width_in_mb4x * 16 + uint32_t down_scaled_height_4x; // down_scaled_height_in_mbs * 16 + + uint32_t target_bit_rate; /* in kbps */ + uint32_t max_bit_rate; /* in kbps */ + uint32_t min_bit_rate; /* in kbps */ + uint64_t init_vbv_buffer_fullness_in_bit; + uint64_t vbv_buffer_size_in_bit; + uint32_t frames_per_100s; + uint32_t gop_size; + uint32_t ref_dist; + uint32_t brc_target_size; + double brc_init_current_target_buf_full_in_bits; + double brc_init_reset_input_bits_per_frame; + uint32_t brc_init_reset_buf_size_in_bits; + uint32_t brc_init_previous_target_buf_full_in_bits; + + uint8_t mode_cost[12]; + uint8_t mv_cost[8]; + uint8_t hme_mv_cost[8]; + + uint32_t num_roi; + uint32_t max_delta_qp; + uint32_t min_delta_qp; + struct intel_roi roi[3]; + + uint32_t brc_initted:1; + uint32_t brc_need_reset:1; + uint32_t is_low_delay:1; + uint32_t brc_enabled:1; + uint32_t internal_rate_mode:4; + uint32_t current_pass:4; + uint32_t num_passes:4; + uint32_t is_first_pass:1; + uint32_t is_last_pass:1; + + uint32_t vdenc_streamin_enable:1; + uint32_t vdenc_pak_threshold_check_enable:1; + uint32_t pad1:1; + uint32_t transform_8x8_mode_enable:1; + uint32_t frame_type:2; + + uint32_t mb_brc_enabled:1; + uint32_t pad0:31; + + struct i965_gpe_resource brc_init_reset_dmem_res; + struct i965_gpe_resource brc_history_buffer_res; + struct i965_gpe_resource brc_stream_in_res; + struct i965_gpe_resource brc_stream_out_res; + struct i965_gpe_resource huc_dummy_res; + + struct i965_gpe_resource brc_update_dmem_res[NUM_OF_BRC_PAK_PASSES]; + struct i965_gpe_resource vdenc_statistics_res; + struct i965_gpe_resource pak_statistics_res; + struct i965_gpe_resource vdenc_avc_image_state_res; + struct i965_gpe_resource hme_detection_summary_buffer_res; + struct i965_gpe_resource brc_constant_data_res; + struct i965_gpe_resource second_level_batch_res; + + struct i965_gpe_resource huc_status_res; + struct i965_gpe_resource huc_status2_res; + + struct i965_gpe_resource recon_surface_res; + struct i965_gpe_resource scaled_4x_recon_surface_res; + struct i965_gpe_resource post_deblocking_output_res; + struct i965_gpe_resource pre_deblocking_output_res; + struct i965_gpe_resource list_reference_res[16]; + struct i965_gpe_resource list_scaled_4x_reference_res[16]; + struct i965_gpe_resource uncompressed_input_surface_res; // Input + + struct { + struct i965_gpe_resource res; // Output + uint32_t start_offset; + uint32_t end_offset; + } compressed_bitstream; + + struct i965_gpe_resource mfx_intra_row_store_scratch_res; // MFX internal buffer + struct i965_gpe_resource mfx_deblocking_filter_row_store_scratch_res; // MFX internal buffer + struct i965_gpe_resource mfx_bsd_mpc_row_store_scratch_res; // MFX internal buffer + struct i965_gpe_resource vdenc_row_store_scratch_res; // VDENC internal buffer + + struct i965_gpe_resource vdenc_streamin_res; + + uint32_t num_refs[2]; + uint32_t list_ref_idx[2][32]; + + struct { + struct i965_gpe_resource res; + uint32_t base_offset; + uint32_t size; + uint32_t bytes_per_frame_offset; + } status_bffuer; +}; + +struct huc_pipe_mode_select_parameter +{ + uint32_t huc_stream_object_enable; + uint32_t indirect_stream_out_enable; + uint32_t media_soft_reset_counter; +}; + +struct huc_imem_state_parameter +{ + uint32_t huc_firmware_descriptor; +}; + +struct huc_dmem_state_parameter +{ + struct i965_gpe_resource *huc_data_source_res; + uint32_t huc_data_destination_base_address; + uint32_t huc_data_length; +}; + +struct huc_cfg_state_parameter +{ + uint32_t force_reset; +}; + + +struct huc_virtual_addr_parameter +{ + struct { + struct i965_gpe_resource *huc_surface_res; + uint32_t is_target; + } regions[16]; +}; + +struct huc_ind_obj_base_addr_parameter +{ + struct i965_gpe_resource *huc_indirect_stream_in_object_res; + struct i965_gpe_resource *huc_indirect_stream_out_object_res; +}; + +struct huc_stream_object_parameter +{ + uint32_t indirect_stream_in_data_length; + uint32_t indirect_stream_in_start_address; + uint32_t indirect_stream_out_start_address; + uint32_t huc_bitstream_enable; + uint32_t length_mode; + uint32_t stream_out; + uint32_t emulation_prevention_byte_removal; + uint32_t start_code_search_engine; + uint8_t start_code_byte2; + uint8_t start_code_byte1; + uint8_t start_code_byte0; +}; + +struct huc_start_parameter +{ + uint32_t last_stream_object; +}; + +struct vd_pipeline_flush_parameter +{ + uint32_t hevc_pipeline_done; + uint32_t vdenc_pipeline_done; + uint32_t mfl_pipeline_done; + uint32_t mfx_pipeline_done; + uint32_t vd_command_message_parser_done; + uint32_t hevc_pipeline_command_flush; + uint32_t vdenc_pipeline_command_flush; + uint32_t mfl_pipeline_command_flush; + uint32_t mfx_pipeline_command_flush; +}; + +extern Bool +gen9_vdenc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); + +#endif /* GEN9_VDENC_H */ diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_const_def.c intel-vaapi-driver-1.7.1/src/gen9_vp9_const_def.c --- intel-vaapi-driver-1.6.2/src/gen9_vp9_const_def.c 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_const_def.c 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,1716 @@ +/* + * * Copyright (c) 2016, Intel Corporation + * + * All rights reserved. + * Redistribution. Redistribution and use in binary form, without modification, are + * permitted provided that the following conditions are met: + * Redistributions must reproduce the above copyright notice and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * Neither the name of Intel Corporation nor the names of its suppliers may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * No reverse engineering, decompilation, or disassembly of this software is permitted. + * Limited patent license. Intel Corporation grants a world-wide, royalty-free, + * nonexclusive license under patents it now or hereafter owns or controls to make, have made, + * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any + * such patent is necessary to Utilize the software alone. The patent license shall not apply + * to any combinations which include this software. No hardware per se is licensed here under. + + * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include + +const unsigned int vp9_fullspiral_ime_search_path_delta[14] = { + 0x0101F00F, 0x0F0F1010, 0xF0F0F00F, 0x01010101, 0x10101010, 0x0F0F0F0F, 0xF0F0F00F, 0x0101F0F0, 0x01010101, 0x10101010, 0x0F0F1010, 0x0F0F0F0F, 0xF0F0F00F, 0xF0F0F0F0 +}; + +const unsigned int vp9_diamond_ime_search_path_delta[14] = { + 0x120FF10F, 0x1E22E20D, 0x20E2FF10, 0x2EDD06FC, 0x11D33FF1, 0xEB1FF33D, 0x4EF1F1F1, 0xF1F21211, 0x0DFFFFE0, 0x11201F1F, 0x1105F1CF, 0x00000000, 0x00000000, 0x00000000 +}; + +const unsigned int vp9_brc_const_data_i_g9[4448] = { + 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305, + 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E, + 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2, + 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000, + 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A, + 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE, + 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06, + 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000, + 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A, + 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002, + 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, + 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, + 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, + 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, + 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, + 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, + 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, + 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, + 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, + 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, + 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, + 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, + 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, + 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, + 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, + 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, + 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, + 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, + 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, + 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, + 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, + 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, + 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, + 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, + 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, + 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, + 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, + 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, + 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, + 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, + 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, + 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, + 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, + 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, + 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, + 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, + 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, + 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, + 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, + 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, + 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, + 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, + 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B, + 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C, + 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D, + 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, + 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, + 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F, + 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030, + 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, + 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, + 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032, + 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033, + 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, + 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, + 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035, + 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036, + 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, + 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, + 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038, + 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039, + 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, + 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, + 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B, + 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, + 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, + 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D, + 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E, + 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F, + 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040, + 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041, + 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043, + 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044, + 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045, + 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046, + 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047, + 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048, + 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049, + 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A, + 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B, + 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C, + 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D, + 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E, + 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F, + 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050, + 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052, + 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053, + 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054, + 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056, + 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057, + 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058, + 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A, + 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B, + 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C, + 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D, + 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F, + 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060, + 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061, + 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063, + 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065, + 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066, + 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068, + 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069, + 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B, + 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C, + 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E, + 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F, + 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071, + 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073, + 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074, + 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076, + 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078, + 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079, + 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B, + 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D, + 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E, + 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080, + 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082, + 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084, + 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086, + 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088, + 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A, + 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C, + 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E, + 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090, + 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092, + 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094, + 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096, + 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098, + 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A, + 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C, + 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E, + 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1, + 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3, + 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5, + 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7, + 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA, + 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC, + 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE, + 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1, + 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3, + 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6, + 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8, + 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB, + 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD, + 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0, + 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2, + 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5, + 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8, + 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB, + 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD, + 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0, + 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3, + 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6, + 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9, + 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC, + 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF, + 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3, + 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6, + 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9, + 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED, + 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1, + 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4, + 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8, + 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC, + 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100, + 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105, + 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109, + 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D, + 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112, + 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117, + 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C, + 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121, + 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127, + 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D, + 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133, + 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139, + 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140, + 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147, + 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E, + 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156, + 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E, + 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166, + 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170, + 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179, + 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183, + 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E, + 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199, + 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5, + 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2, + 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0, + 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE, + 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD, + 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE, + 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF, + 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211, + 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225, + 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239, + 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250, + 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268, + 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281, + 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C, + 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013, + 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020, + 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E, + 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B, + 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048, + 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055, + 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C, + 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088, + 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC, + 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9, + 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110, + 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154, + 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7, + 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B, + 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3, + 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502, + 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015, + 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025, + 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035, + 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045, + 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055, + 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065, + 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084, + 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA, + 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF, + 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127, + 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A, + 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212, + 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB, + 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9, + 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525, + 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701 +}; + +const unsigned int vp9_brc_const_data_p_g9[4448] = { + 0x0032000A, 0x00960064, 0x67614B28, 0xFCFAA07D, 0x040200FE, 0x03010106, 0x05280102, 0x04010305, + 0x78503C1E, 0x04FFC88C, 0x78503C1E, 0x28FFC88C, 0x02B47850, 0x120E0A06, 0x0A060402, 0x0200000E, + 0x00000804, 0xFE040200, 0x02000000, 0x00FEFCFA, 0xFCF8F600, 0xF4F200FE, 0xEEFEFCF8, 0xFEFCF6F2, + 0x100A0402, 0x08040214, 0x0200100C, 0x000C0804, 0x04020000, 0x000000FE, 0xFEFEFC02, 0xFCFA0000, + 0xF600FEFE, 0x00FEFCFA, 0xFCF8F4F2, 0x000000FE, 0x0C080000, 0x00001410, 0x06000000, 0xFE120E0A, + 0x00000000, 0x0E0C0806, 0x0000FEFC, 0x06040200, 0xFEFCFA0A, 0x02000000, 0xFCF80A06, 0x000000FE, + 0xF60A0602, 0x00FEFCFA, 0x0A060200, 0xFEFCF8F4, 0x06020000, 0xFCF8F40A, 0x020000FE, 0x00000A06, + 0x06000000, 0x00120E0A, 0x00000000, 0x100C0A06, 0x000000FE, 0x0E0A0600, 0x00FEFC10, 0x08040000, + 0xFCFA0C0A, 0x000000FE, 0xF80A0802, 0x0000FEFC, 0x0A080200, 0xFEFEFCF8, 0x08000000, 0xFCFAF80A, + 0x000000FE, 0xF8F60A02, 0x0000FEFC, 0x00080200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x040C2400, 0x00000000, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003, + 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004, + 0x08184801, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, + 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, + 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, + 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, + 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, + 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009, + 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, + 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A, + 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, + 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B, + 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, + 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, + 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, + 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, + 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, + 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D, + 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, + 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E, + 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, + 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F, + 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, + 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010, + 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, + 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011, + 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, + 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012, + 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, + 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, + 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, + 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, + 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, + 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014, + 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, + 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015, + 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, + 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016, + 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, + 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017, + 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, + 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018, + 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, + 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019, + 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, + 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, + 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, + 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, + 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, + 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B, + 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, + 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C, + 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, + 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D, + 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, + 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E, + 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, + 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F, + 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, + 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, + 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, + 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, + 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, + 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021, + 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, + 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022, + 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, + 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023, + 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, + 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024, + 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, + 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025, + 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, + 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, + 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, + 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027, + 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, + 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028, + 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, + 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029, + 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, + 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A, + 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, + 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, + 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, + 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, + 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, + 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C, + 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, + 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D, + 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, + 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E, + 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, + 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F, + 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, + 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, + 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031, + 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, + 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032, + 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, + 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033, + 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034, + 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, + 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, + 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, + 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036, + 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, + 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037, + 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, + 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038, + 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, + 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, + 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, + 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, + 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, + 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A, + 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, + 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B, + 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, + 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C, + 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, + 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D, + 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, + 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, + 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, + 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, + 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, + 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F, + 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, + 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040, + 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, + 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041, + 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, + 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, + 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, + 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, + 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, + 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043, + 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, + 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044, + 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, + 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045, + 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, + 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, + 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, + 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, + 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, + 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047, + 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, + 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048, + 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, + 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049, + 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, + 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, + 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, + 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B, + 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, + 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C, + 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D, + 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, + 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, + 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, + 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, + 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F, + 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, + 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050, + 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, + 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, + 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, + 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052, + 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, + 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053, + 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054, + 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, + 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, + 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, + 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, + 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057, + 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, + 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058, + 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, + 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A, + 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, + 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C, + 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, + 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D, + 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, + 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F, + 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060, + 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062, + 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, + 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063, + 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, + 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065, + 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, + 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066, + 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068, + 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069, + 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, + 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B, + 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, + 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C, + 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, + 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E, + 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, + 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F, + 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, + 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071, + 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, + 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072, + 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, + 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074, + 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, + 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075, + 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, + 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076, + 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, + 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078, + 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, + 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079, + 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, + 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B, + 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, + 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D, + 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, + 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F, + 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, + 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081, + 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, + 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083, + 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E, + 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086, + 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, + 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088, + 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, + 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A, + 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, + 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C, + 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, + 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E, + 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, + 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090, + 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, + 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092, + 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, + 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094, + 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, + 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096, + 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, + 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098, + 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, + 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A, + 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, + 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C, + 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, + 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E, + 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085, + 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1, + 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, + 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4, + 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, + 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6, + 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B, + 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9, + 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, + 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC, + 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, + 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE, + 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092, + 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1, + 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, + 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4, + 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, + 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6, + 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, + 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9, + 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, + 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB, + 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C, + 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE, + 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, + 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0, + 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, + 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3, + 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3, + 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7, + 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6, + 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA, + 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9, + 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD, + 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, + 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0, + 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, + 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3, + 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0, + 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6, + 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3, + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9, + 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC, + 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, + 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF, + 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA, + 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2, + 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD, + 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6, + 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1, + 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9, + 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4, + 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED, + 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, + 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0, + 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, + 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3, + 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB, + 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7, + 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE, + 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA, + 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1, + 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD, + 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5, + 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101, + 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8, + 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105, + 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB, + 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109, + 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE, + 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D, + 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2, + 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110, + 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5, + 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114, + 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8, + 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118, + 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC, + 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C, + 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF, + 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120, + 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2, + 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124, + 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6, + 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128, + 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9, + 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C, + 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC, + 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130, + 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100, + 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135, + 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103, + 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139, + 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106, + 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D, + 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A, + 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142, + 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D, + 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146, + 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110, + 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A, + 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114, + 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F, + 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A, + 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154, + 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E, + 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158, + 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121, + 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D, + 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124, + 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162, + 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128, + 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167, + 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E, + 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C, + 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131, + 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171, + 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135, + 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176, + 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138, + 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B, + 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F, + 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180, + 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142, + 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185, + 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145, + 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B, + 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C, + 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190, + 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F, + 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196, + 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153, + 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B, + 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159, + 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1, + 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D, + 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7, + 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163, + 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD, + 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167, + 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3, + 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D, + 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9, + 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171, + 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF, + 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177, + 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6, + 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E, + 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD, + 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181, + 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3, + 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188, + 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB, + 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E, + 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2, + 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195, + 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9, + 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C, + 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1, + 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2, + 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9, + 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9, + 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201, + 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0, + 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A, + 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6, + 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212, + 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD, + 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B, + 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7, + 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225, + 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE, + 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F, + 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7, + 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239, + 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE, + 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243, + 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8, + 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E, + 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2, + 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A, + 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC, + 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266, + 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206, + 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272, + 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213, + 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280, + 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D, + 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E, + 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A, + 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C, + 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238, + 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC, + 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245, + 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC, + 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252, + 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD, + 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263, + 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0, + 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270, + 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3, + 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281, + 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307, + 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295, + 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C, + 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5, + 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333, + 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9, + 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B, + 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1, + 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365, + 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8, + 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380, + 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF, + 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D, + 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316, + 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB, + 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334, + 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC, + 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F, + 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE, + 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D, + 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422, + 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E, + 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A, + 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF, + 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473, + 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7, + 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0, + 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF, + 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0, + 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427, + 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502, + 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455, + 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538, + 0x00080004, 0x00090008, 0x000B000A, 0x000C000C, 0x000E000D, 0x0010000F, 0x00120011, 0x00130013, + 0x00150014, 0x00170016, 0x00190018, 0x001A001A, 0x001C001B, 0x001E001D, 0x0020001F, 0x00210020, + 0x00230022, 0x00250024, 0x00260026, 0x00280027, 0x002A0029, 0x002B002B, 0x002D002C, 0x002F002E, + 0x00300030, 0x00320031, 0x00340033, 0x00350035, 0x00370036, 0x00390038, 0x003A0039, 0x003C003B, + 0x003E003D, 0x003F003E, 0x00410040, 0x00420042, 0x00440043, 0x00460045, 0x00470046, 0x00490048, + 0x004A004A, 0x004C004B, 0x004E004D, 0x004F004E, 0x00510050, 0x00520051, 0x00540053, 0x00550055, + 0x00580057, 0x005C005A, 0x005F005D, 0x00620060, 0x00650063, 0x00680066, 0x006B0069, 0x006E006C, + 0x0071006F, 0x00740072, 0x00760075, 0x00790078, 0x007D007B, 0x0081007F, 0x00860083, 0x008A0088, + 0x008E008C, 0x00920090, 0x00960094, 0x009A0098, 0x009E009C, 0x00A400A1, 0x00A900A6, 0x00AE00AC, + 0x00B400B1, 0x00B900B6, 0x00BE00BB, 0x00C300C0, 0x00CA00C7, 0x00D000CD, 0x00D600D3, 0x00DC00D9, + 0x00E200DF, 0x00E900E6, 0x00F000ED, 0x00F700F3, 0x00FD00FA, 0x01050101, 0x010D0109, 0x01140110, + 0x011C0118, 0x01240120, 0x012C0128, 0x01350130, 0x013D0139, 0x01460142, 0x014F014A, 0x01580154, + 0x0162015D, 0x016C0167, 0x01760171, 0x0180017B, 0x018B0185, 0x01960190, 0x01A1019B, 0x01AD01A7, + 0x01B901B3, 0x01C601BF, 0x01D301CD, 0x01E201DB, 0x01F101E9, 0x020101F9, 0x0212020A, 0x0225021B, + 0x0239022F, 0x024E0243, 0x0266025A, 0x02800272, 0x029C028E, 0x02BC02AC, 0x02E002CD, 0x030702F3, + 0x0333031C, 0x0365034B, 0x039D0380, 0x03DC03BB, 0x042203FE, 0x0473044A, 0x04D004A0, 0x05380502, + 0x00080004, 0x000A0009, 0x000C000B, 0x000E000D, 0x0010000F, 0x00120011, 0x00140013, 0x00160015, + 0x00180017, 0x001A0019, 0x001C001B, 0x001E001D, 0x0020001F, 0x00220021, 0x00240023, 0x00260025, + 0x00280027, 0x002A0029, 0x002C002B, 0x002E002D, 0x0030002F, 0x00320031, 0x00340033, 0x00360035, + 0x00380037, 0x003A0039, 0x003C003B, 0x003E003D, 0x0040003F, 0x00420041, 0x00440043, 0x00460045, + 0x00480047, 0x004A0049, 0x004C004B, 0x004E004D, 0x0050004F, 0x00520051, 0x00540053, 0x00560055, + 0x00580057, 0x005A0059, 0x005C005B, 0x005E005D, 0x0060005F, 0x00620061, 0x00640063, 0x00660065, + 0x006A0068, 0x006E006C, 0x00720070, 0x00760074, 0x007A0078, 0x007E007C, 0x00820080, 0x00860084, + 0x008A0088, 0x008E008C, 0x00920090, 0x00960094, 0x009B0098, 0x00A1009E, 0x00A700A4, 0x00AD00AA, + 0x00B300B0, 0x00B900B6, 0x00BF00BC, 0x00C500C2, 0x00CB00C8, 0x00D300CF, 0x00DB00D7, 0x00E300DF, + 0x00EB00E7, 0x00F300EF, 0x00FB00F7, 0x010400FF, 0x010E0109, 0x01180113, 0x0122011D, 0x012C0127, + 0x01370131, 0x0143013D, 0x014F0149, 0x015B0155, 0x01670161, 0x0175016E, 0x0183017C, 0x0191018A, + 0x01A00198, 0x01B001A8, 0x01C001B8, 0x01D101C8, 0x01E301DA, 0x01F501EC, 0x020801FE, 0x021C0212, + 0x02300226, 0x0246023B, 0x025C0251, 0x02730267, 0x028B027F, 0x02A40297, 0x02BE02B1, 0x02D902CB, + 0x02F502E7, 0x03120303, 0x03300321, 0x03500340, 0x03710360, 0x03930382, 0x03B703A5, 0x03DC03C9, + 0x040203EF, 0x042A0416, 0x0454043F, 0x047F0469, 0x04AC0495, 0x04DB04C3, 0x050C04F3, 0x053F0525, + 0x05740559, 0x05AB058F, 0x05E405C7, 0x061F0601, 0x065C063D, 0x069C067C, 0x06DF06BD, 0x07240701 +}; + +const unsigned int gen9_vp9_avs_coeffs[256] = { + 0x00000000, 0x40400000, 0x00000000, 0x00000000, 0x40000000, 0x00000000, 0x40000000, 0x00000000, + 0x0101FFFF, 0x4040FEFE, 0xFFFF0202, 0x00000101, 0x40FF0000, 0x00000001, 0x40FF0000, 0x00000001, + 0x0202FFFF, 0x4141FCFC, 0xFEFE0404, 0xFFFF0101, 0x3FFE0000, 0x00000003, 0x3FFE0000, 0x00000003, + 0x0303FFFF, 0x3F3FFBFB, 0xFDFD0606, 0xFFFF0202, 0x3EFD0000, 0x00000005, 0x3EFD0000, 0x00000005, + 0x0303FEFE, 0x4040F9F9, 0xFCFC0909, 0xFFFF0202, 0x3EFC0000, 0x00000006, 0x3EFC0000, 0x00000006, + 0x0404FEFE, 0x3F3FF8F8, 0xFBFB0B0B, 0xFEFE0303, 0x3CFC0000, 0x00000008, 0x3CFC0000, 0x00000008, + 0x0505FDFD, 0x3E3EF7F7, 0xFAFA0E0E, 0xFEFE0303, 0x3CFB0000, 0x0000FF0A, 0x3CFB0000, 0x0000FF0A, + 0x0505FDFD, 0x3D3DF5F5, 0xF9F91111, 0xFEFE0404, 0x39FB0000, 0x0000FF0D, 0x39FB0000, 0x0000FF0D, + 0x0606FDFD, 0x3B3BF5F5, 0xF8F81414, 0xFDFD0404, 0x37FB0000, 0x0000FF0F, 0x37FB0000, 0x0000FF0F, + 0x0606FCFC, 0x3B3BF4F4, 0xF7F71616, 0xFDFD0505, 0x35FB0000, 0x0000FF11, 0x35FB0000, 0x0000FF11, + 0x0707FCFC, 0x3939F3F3, 0xF6F61919, 0xFDFD0505, 0x33FB0000, 0x0000FE14, 0x33FB0000, 0x0000FE14, + 0x0707FCFC, 0x3737F3F3, 0xF5F51C1C, 0xFCFC0606, 0x31FB0000, 0x0000FE16, 0x31FB0000, 0x0000FE16, + 0x0707FCFC, 0x3535F2F2, 0xF5F51F1F, 0xFCFC0606, 0x2EFB0000, 0x0000FE19, 0x2EFB0000, 0x0000FE19, + 0x0707FCFC, 0x3232F2F2, 0xF4F42222, 0xFCFC0707, 0x2CFB0000, 0x0000FD1C, 0x2CFB0000, 0x0000FD1C, + 0x0707FCFC, 0x3030F2F2, 0xF3F32525, 0xFCFC0707, 0x29FB0000, 0x0000FD1F, 0x29FB0000, 0x0000FD1F, + 0x0707FCFC, 0x2D2DF2F2, 0xF3F32828, 0xFCFC0707, 0x27FC0000, 0x0000FC21, 0x27FC0000, 0x0000FC21, + 0x0707FCFC, 0x2929F3F3, 0xF3F32B2B, 0xFCFC0707, 0x24FC0000, 0x0000FC24, 0x24FC0000, 0x0000FC24, + 0x0707FCFC, 0x2828F3F3, 0xF2F22D2D, 0xFCFC0707, 0x21FC0000, 0x0000FC27, 0x21FC0000, 0x0000FC27, + 0x0707FCFC, 0x2525F3F3, 0xF2F23030, 0xFCFC0707, 0x1FFD0000, 0x0000FB29, 0x1FFD0000, 0x0000FB29, + 0x0707FCFC, 0x2222F4F4, 0xF2F23232, 0xFCFC0707, 0x1CFD0000, 0x0000FB2C, 0x1CFD0000, 0x0000FB2C, + 0x0606FCFC, 0x1F1FF5F5, 0xF2F23535, 0xFCFC0707, 0x19FE0000, 0x0000FB2E, 0x19FE0000, 0x0000FB2E, + 0x0606FCFC, 0x1C1CF5F5, 0xF3F33737, 0xFCFC0707, 0x16FE0000, 0x0000FB31, 0x16FE0000, 0x0000FB31, + 0x0505FDFD, 0x1919F6F6, 0xF3F33939, 0xFCFC0707, 0x14FE0000, 0x0000FB33, 0x14FE0000, 0x0000FB33, + 0x0505FDFD, 0x1616F7F7, 0xF4F43B3B, 0xFCFC0606, 0x11FF0000, 0x0000FB35, 0x11FF0000, 0x0000FB35, + 0x0404FDFD, 0x1414F8F8, 0xF5F53B3B, 0xFDFD0606, 0x0FFF0000, 0x0000FB37, 0x0FFF0000, 0x0000FB37, + 0x0404FEFE, 0x1111F9F9, 0xF5F53D3D, 0xFDFD0505, 0x0DFF0000, 0x0000FB39, 0x0DFF0000, 0x0000FB39, + 0x0303FEFE, 0x0E0EFAFA, 0xF7F73E3E, 0xFDFD0505, 0x0AFF0000, 0x0000FB3C, 0x0AFF0000, 0x0000FB3C, + 0x0303FEFE, 0x0B0BFBFB, 0xF8F83F3F, 0xFEFE0404, 0x08000000, 0x0000FC3C, 0x08000000, 0x0000FC3C, + 0x0202FFFF, 0x0909FCFC, 0xF9F94040, 0xFEFE0303, 0x06000000, 0x0000FC3E, 0x06000000, 0x0000FC3E, + 0x0202FFFF, 0x0606FDFD, 0xFBFB3F3F, 0xFFFF0303, 0x05000000, 0x0000FD3E, 0x05000000, 0x0000FD3E, + 0x0101FFFF, 0x0404FEFE, 0xFCFC4141, 0xFFFF0202, 0x03000000, 0x0000FE3F, 0x03000000, 0x0000FE3F, + 0x01010000, 0x0202FFFF, 0xFEFE4040, 0xFFFF0101, 0x01000000, 0x0000FF40, 0x01000000, 0x0000FF40, +}; + +const unsigned int intel_vp9_costlut_key[4096] = { + 0x02061200, 0x00000036, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x28190702, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010002, + 0x050D2501, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x050D2502, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x050D2503, 0x0000006D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x38290E03, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020004, + 0x06102E04, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, + 0x06102E05, 0x00000088, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3A2B1904, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020005, + 0x07133706, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x07133707, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x07133708, 0x000000A3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3C2E1B05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030006, + 0x08164009, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, + 0x0816400A, 0x000000BE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3E381D05, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030007, + 0x0A1A4A0B, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, + 0x0A1A4A0C, 0x000000DA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x48391E06, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040008, + 0x0B1D530D, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0B1D530E, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0B1D530F, 0x000000F5, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x493A2807, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040009, + 0x0C205C10, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, + 0x0C205C11, 0x00000110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4A3B2908, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000A, + 0x0D236512, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, + 0x0D236513, 0x0000012B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4B3C2A09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0005000B, + 0x0E266E14, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, + 0x0E266E15, 0x00000146, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4C3E2B09, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000C, + 0x102A7816, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x102A7817, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x102A7818, 0x00000162, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4D3F2C0A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0006000D, + 0x112D8119, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, + 0x112D811A, 0x0000017D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4E482C0B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000E, + 0x12308A1B, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x12308A1C, 0x00000198, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x4F482D0C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x1333931D, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x1333931E, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x1333931F, 0x000001B3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x58492E0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080010, + 0x14369C20, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, + 0x14369C21, 0x000001CE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A2F0D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080011, + 0x163AA622, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, + 0x163AA623, 0x000001EA, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x594A380E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090012, + 0x173DAF24, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x173DAF25, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x173DAF26, 0x00000205, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B380F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00090013, + 0x1840B827, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, + 0x1840B828, 0x00000220, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5A4B3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0014, + 0x1943C129, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1943C12A, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1943C12B, 0x0000023B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3918, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000A0015, + 0x1A46CA2C, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, + 0x1A46CA2D, 0x00000256, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5B4C3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0016, + 0x1B49D32E, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, + 0x1B49D32F, 0x00000271, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4D3A19, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, + 0x1D4DDD30, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1D4DDD31, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1D4DDD32, 0x0000028D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5C4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0018, + 0x1E50E633, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, + 0x1E50E634, 0x000002A8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4E3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000C0019, + 0x1F53EF35, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x1F53EF36, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x1F53EF37, 0x000002C3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5D4F3B1A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001A, + 0x2056F838, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, + 0x2056F839, 0x000002DE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E4F3C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000D001B, + 0x2159FF3A, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x2159FF3B, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x2159FF3C, 0x000002F9, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5E583C1B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001C, + 0x235DFF3D, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, + 0x235DFF3E, 0x00000315, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000E001D, + 0x2460FF3F, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, + 0x2460FF40, 0x00000330, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5F583D1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001E, + 0x2563FF41, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2563FF42, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2563FF43, 0x0000034B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F001F, + 0x2666FF44, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, + 0x2666FF45, 0x00000366, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593E1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100020, + 0x2769FF46, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x2769FF47, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x2769FF48, 0x00000381, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x68593F1D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100021, + 0x296DFF49, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, + 0x296DFF4A, 0x0000039D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110022, + 0x2A70FF4B, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2A70FF4C, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2A70FF4D, 0x000003B8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A3F1E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00110023, + 0x2B73FF4E, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, + 0x2B73FF4F, 0x000003D3, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120024, + 0x2C76FF50, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2C76FF51, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2C76FF52, 0x000003EE, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x695A481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120025, + 0x2D79FF53, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, + 0x2D79FF54, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B481F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130026, + 0x2F7DFF55, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x2F7DFF56, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x2F7DFF57, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B491F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130027, + 0x3080FF58, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3080FF59, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3080FF5A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6A5B4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140028, + 0x3183FF5B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, + 0x3183FF5C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00140029, + 0x3286FF5D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3286FF5E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3286FF5F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4928, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002A, + 0x3389FF60, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4929, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0015002B, + 0x358DFF61, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6B5C4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002C, + 0x3690FF62, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0016002D, + 0x3793FF63, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, + 0x3793FF64, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002E, + 0x3896FF65, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4A29, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0017002F, + 0x3999FF66, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6C5D4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180030, + 0x3B9DFF67, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, + 0x3B9DFF68, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00180031, + 0x3CA0FF69, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190032, + 0x3DA3FF6A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5E4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00190033, + 0x3EA6FF6B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, + 0x3EA6FF6C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6D5F4B2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0034, + 0x3FA9FF6D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001A0035, + 0x41ADFF6E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0036, + 0x42B0FF6F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, + 0x42B0FF70, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E5F4C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001B0037, + 0x43B3FF71, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6E684C2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0038, + 0x44B6FF72, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001C0039, + 0x45B9FF73, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, + 0x45B9FF74, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003A, + 0x47BDFF75, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001D003B, + 0x48C0FF76, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, + 0x48C0FF77, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x6F684D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003C, + 0x49C3FF78, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694D2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001E003D, + 0x4AC6FF79, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003E, + 0x4BC9FF7A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x001F003F, + 0x4DCDFF7B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200040, + 0x4ED0FF7C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x78694E2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200041, + 0x50D6FF7D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x79694F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00210043, + 0x51D9FF7E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220044, + 0x52DCFF7F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00220045, + 0x54E0FF80, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A4F2E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230046, + 0x55E3FF81, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230047, + 0x56E6FF82, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240048, + 0x57E9FF83, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00240049, + 0x58ECFF84, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x796A582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004A, + 0x5AF0FF85, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0025004B, + 0x5BF3FF86, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004C, + 0x5CF6FF87, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B582F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0026004D, + 0x5DF9FF88, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B592F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004E, + 0x5EFCFF89, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0027004F, + 0x60FFFF8A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7A6B5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280050, + 0x62FFFF8B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290052, + 0x63FFFF8C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00290053, + 0x64FFFF8D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002A0054, + 0x67FFFF8E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5938, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0056, + 0x68FFFF8F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002B0057, + 0x69FFFF90, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B6C5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002C0058, + 0x6CFFFF91, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005A, + 0x6DFFFF92, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002D005B, + 0x6EFFFF93, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005C, + 0x6FFFFF94, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002E005D, + 0x72FFFF95, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5A39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x002F005F, + 0x73FFFF96, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6D5B39, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300060, + 0x74FFFF97, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7C6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00300061, + 0x76FFFF98, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00310063, + 0x79FFFF99, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00320065, + 0x7AFFFF9A, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6E5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00330066, + 0x7CFFFF9B, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5B3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340068, + 0x7EFFFF9C, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7D6F5C3A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00340069, + 0x80FFFF9D, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0035006B, + 0x81FFFF9E, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0036006C, + 0x83FFFF9F, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E6F5C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006E, + 0x85FFFFA0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0037006F, + 0x87FFFFA1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7E785C3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00380071, + 0x89FFFFA2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00390073, + 0x8BFFFFA3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003A0074, + 0x8DFFFFA4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003B0076, + 0x8FFFFFA5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7F785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0078, + 0x91FFFFA6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88785D3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003C0079, + 0x93FFFFA7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003D007B, + 0x95FFFFA8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003E007D, + 0x97FFFFA9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x003F007E, + 0x99FFFFAA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00400080, + 0x9BFFFFAB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795E3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00410082, + 0x9EFFFFAC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x88795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00420084, + 0xA0FFFFAD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x89795F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00430086, + 0xA3FFFFAE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00440088, + 0xA5FFFFAF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0045008A, + 0xA7FFFFB0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A5F3E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0046008C, + 0xAAFFFFB1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0047008E, + 0xACFFFFB2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00480090, + 0xAFFFFFB3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00490092, + 0xB1FFFFB4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x897A683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004A0094, + 0xB3FFFFB5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004B0096, + 0xB6FFFFB6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004C0098, + 0xB8FFFFB7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B683F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004D009A, + 0xBAFFFFB8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004E009C, + 0xBDFFFFB9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B693F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x004F009E, + 0xC0FFFFBA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005000A1, + 0xC3FFFFBB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8A7B6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005100A3, + 0xC5FFFFBC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005200A5, + 0xC8FFFFBD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005300A7, + 0xCBFFFFBE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005500AA, + 0xCEFFFFBF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6948, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005600AC, + 0xD0FFFFC0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005700AE, + 0xD4FFFFC1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7C6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005800B1, + 0xD6FFFFC2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8B7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005900B3, + 0xDAFFFFC3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005B00B6, + 0xDCFFFFC4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005C00B8, + 0xE0FFFFC5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005D00BB, + 0xE2FFFFC6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6A49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x005E00BD, + 0xE6FFFFC7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7D6B49, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006000C0, + 0xE8FFFFC8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8C7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006100C2, + 0xEBFFFFC9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006200C5, + 0xEFFFFFCA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006400C8, + 0xF3FFFFCB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006500CB, + 0xF5FFFFCC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7E6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006600CD, + 0xF9FFFFCD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8D7F6B4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006800D0, + 0xFCFFFFCE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006900D3, + 0xFFFFFFCF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006B00D6, + 0xFFFFFFD0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006C00D9, + 0xFFFFFFD1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E7F6C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006E00DC, + 0xFFFFFFD2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8E886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x006F00DF, + 0xFFFFFFD3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886C4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007100E3, + 0xFFFFFFD4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007300E6, + 0xFFFFFFD5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007400E9, + 0xFFFFFFD6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007600ED, + 0xFFFFFFD7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F886D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007800F1, + 0xFFFFFFD8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896D4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007A00F4, + 0xFFFFFFD9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007C00F8, + 0xFFFFFFDA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x007E00FC, + 0xFFFFFFDB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00800100, + 0xFFFFFFDC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896E4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00820105, + 0xFFFFFFDD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00840109, + 0xFFFFFFDE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F896F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0086010D, + 0xFFFFFFDF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00890112, + 0xFFFFFFE0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A6F4E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008B0117, + 0xFFFFFFE1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008E011C, + 0xFFFFFFE2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00900121, + 0xFFFFFFE3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8A784E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00930127, + 0xFFFFFFE4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0096012D, + 0xFFFFFFE5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B784F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00990133, + 0xFFFFFFE6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B794F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x009C0139, + 0xFFFFFFE7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A00140, + 0xFFFFFFE8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8B7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A30147, + 0xFFFFFFE9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00A7014E, + 0xFFFFFFEA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7958, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AB0156, + 0xFFFFFFEB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8C7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00AF015E, + 0xFFFFFFEC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B30166, + 0xFFFFFFED, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00B80170, + 0xFFFFFFEE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8D7A59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00BC0179, + 0xFFFFFFEF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B59, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C10183, + 0xFFFFFFF0, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00C7018E, + 0xFFFFFFF1, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8E7B5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00CC0199, + 0xFFFFFFF2, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5A, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D201A5, + 0xFFFFFFF3, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00D901B2, + 0xFFFFFFF4, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7C5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E001C0, + 0xFFFFFFF5, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5B, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00E701CE, + 0xFFFFFFF6, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7D5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00EE01DD, + 0xFFFFFFF7, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00F701EE, + 0xFFFFFFF8, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7E5C, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00FF01FF, + 0xFFFFFFF9, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01080211, + 0xFFFFFFFA, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F7F5D, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01120225, + 0xFFFFFFFB, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x011C0239, + 0xFFFFFFFC, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885E, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01280250, + 0xFFFFFFFD, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F885F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01340268, + 0xFFFFFFFE, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01400281, + 0xFFFFFFFF, 0x000003FF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x8F8F8968, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x014E029C, +}; + +const unsigned int intel_vp9_costlut_p[4096] = { + 0x040C2400, 0x00000010, 0x00010001, 0x00010000, 0x00010000, 0x00020002, 0x00030002, 0x00040003, 0x02020100, 0x04030302, 0x39070402, 0x6F6F0103, 0x00010001, 0x00000000, 0x00000004, 0x00010004, + 0x08184801, 0x00000001, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, + 0x08184802, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x490D0903, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020008, + 0x091B5103, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4A0F0A04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x00020009, + 0x0A1E5A04, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4B180B04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000A, + 0x0B216305, 0x00000000, 0x00020002, 0x00020001, 0x00020000, 0x00040003, 0x00060005, 0x00080007, 0x04030200, 0x08070605, 0x4D190C04, 0x6F6F0305, 0x00020001, 0x00000000, 0x00000008, 0x0002000B, + 0x0C246C06, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, + 0x0C246C07, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4E1A0D05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000C, + 0x0D277508, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x4F1B0E05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000D, + 0x0E2A7E09, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x581C0F05, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000E, + 0x0F2D870A, 0x00000000, 0x00020004, 0x00030001, 0x00040000, 0x00060005, 0x00080007, 0x000C000A, 0x06050400, 0x0C0A0807, 0x591D1806, 0x6F6F0408, 0x00030002, 0x00000000, 0x0000000C, 0x0003000F, + 0x1030900B, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x591D1906, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040010, + 0x1133990C, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1E1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040011, + 0x1236A20D, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5A1F1A07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040012, + 0x1339AB0E, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, + 0x1339AB0F, 0x00000000, 0x00030005, 0x00040002, 0x00050000, 0x00080006, 0x000B000A, 0x0010000D, 0x08060500, 0x180D0B0A, 0x5B281B07, 0x6F6F050B, 0x00040002, 0x00000000, 0x00000010, 0x00040013, + 0x143CB410, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5B281B08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050014, + 0x153FBD11, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5C291C08, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050015, + 0x1642C612, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D291C09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050016, + 0x1745CF13, 0x00000000, 0x00040006, 0x00050002, 0x00060000, 0x000A0008, 0x000E000C, 0x00140011, 0x0A080600, 0x1A190E0C, 0x5D2A1D09, 0x6F6F070E, 0x00050003, 0x00000000, 0x00000014, 0x00050017, + 0x1848D814, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1D09, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060018, + 0x194BE115, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5E2A1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x00060019, + 0x1A4EEA16, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, + 0x1A4EEA17, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1E0A, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001A, + 0x1B51F318, 0x00000000, 0x00050007, 0x00060002, 0x00070000, 0x000C0009, 0x0011000F, 0x00170014, 0x0C090700, 0x1C1A190F, 0x5F2B1F0B, 0x6F6F0818, 0x00060003, 0x00000000, 0x00000017, 0x0006001B, + 0x1C54FC19, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001C, + 0x1D57FF1A, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x682C280B, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001D, + 0x1E5AFF1B, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692C280C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001E, + 0x1F5DFF1C, 0x00000000, 0x00050008, 0x00070003, 0x00080000, 0x000E000B, 0x00140011, 0x001B0017, 0x0E0B0800, 0x1E1C1A19, 0x692D290C, 0x6F6F0A1A, 0x00070004, 0x00000000, 0x0000001B, 0x0007001F, + 0x2060FF1D, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, + 0x2060FF1E, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692D290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080020, + 0x2163FF1F, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x692E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080021, + 0x2266FF20, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E290D, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080022, + 0x2369FF21, 0x00000000, 0x00060009, 0x00080003, 0x00090000, 0x0010000D, 0x00170013, 0x001F001B, 0x180D0900, 0x281E1C1A, 0x6A2E2A0E, 0x6F6F0B1B, 0x00080004, 0x00000000, 0x0000001F, 0x00080023, + 0x246CFF22, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6A2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090024, + 0x256FFF23, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B2F2A0E, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090025, + 0x2672FF24, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, + 0x2672FF25, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090026, + 0x2775FF26, 0x00000000, 0x0007000B, 0x00090004, 0x000B0000, 0x0012000E, 0x00190016, 0x0023001E, 0x190E0B00, 0x291F1D1B, 0x6B382B0F, 0x6F6F0C1D, 0x00090005, 0x00000000, 0x00000023, 0x00090027, + 0x2878FF27, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6B382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0028, + 0x297BFF28, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C382B18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A0029, + 0x2A7EFF29, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C18, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002A, + 0x2B81FF2A, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, + 0x2B81FF2B, 0x00000000, 0x0008000C, 0x000A0004, 0x000C0000, 0x00140010, 0x001C0018, 0x00270021, 0x1A180C00, 0x2A281E1C, 0x6C392C19, 0x6F6F0E1E, 0x000A0005, 0x00000000, 0x00000027, 0x000A002B, + 0x2C84FF2C, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002C, + 0x2D87FF2D, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392C19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002D, + 0x2E8AFF2E, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D392D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002E, + 0x2F8DFF2F, 0x00000000, 0x0009000D, 0x000B0004, 0x000D0000, 0x00160011, 0x001F001B, 0x002B0025, 0x1B190D00, 0x2B29281E, 0x6D3A2D19, 0x6F6F0F1F, 0x000B0006, 0x00000000, 0x0000002B, 0x000B002F, + 0x3090FF30, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, + 0x3090FF31, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2D1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0030, + 0x3193FF32, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0031, + 0x3296FF33, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6E3A2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0032, + 0x3399FF34, 0x00000000, 0x0009000E, 0x000C0005, 0x000E0000, 0x00180013, 0x0022001D, 0x002F0028, 0x1C1A0E00, 0x2C2A291F, 0x6F3B2E1A, 0x6F6F1828, 0x000C0007, 0x00000000, 0x0000002F, 0x000C0033, + 0x349CFF35, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2E1A, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0034, + 0x359FFF36, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, + 0x359FFF37, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0035, + 0x36A2FF38, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x6F3B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0036, + 0x37A5FF39, 0x00000000, 0x000A000F, 0x000D0005, 0x000F0000, 0x001A0014, 0x0025001F, 0x0033002B, 0x1D1A0F00, 0x2D2B2928, 0x783B2F1B, 0x6F6F1929, 0x000D0007, 0x00000000, 0x00000033, 0x000D0037, + 0x38A8FF3A, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C2F1B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0038, + 0x39ABFF3B, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, + 0x39ABFF3C, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381B, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E0039, + 0x3AAEFF3D, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003A, + 0x3BB1FF3E, 0x00000000, 0x000B0010, 0x000E0005, 0x00100000, 0x001C0016, 0x00270022, 0x0037002E, 0x1E1B1800, 0x2E2C2A29, 0x783C381C, 0x6F6F1A2A, 0x000E0008, 0x00000000, 0x00000037, 0x000E003B, + 0x3CB4FF3F, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793C381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003C, + 0x3DB7FF40, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D381C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003D, + 0x3EBAFF41, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, + 0x3EBAFF42, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391C, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003E, + 0x3FBDFF43, 0x00000000, 0x000C0012, 0x000F0006, 0x00120000, 0x001E0017, 0x002A0024, 0x003B0032, 0x1F1C1900, 0x2F2D2B29, 0x793D391D, 0x6F6F1B2A, 0x000F0008, 0x00000000, 0x0000003B, 0x000F003F, + 0x40C0FF44, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100040, + 0x41C3FF45, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793D391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100041, + 0x42C6FF46, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, + 0x42C6FF47, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x793E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100042, + 0x43C9FF48, 0x00000000, 0x000D0013, 0x00100006, 0x00130000, 0x00210019, 0x002D0027, 0x003F0035, 0x281D1A00, 0x382D2B2A, 0x7A3E391D, 0x6F6F1B2B, 0x00180009, 0x00000000, 0x0000003F, 0x00100043, + 0x44CCFF49, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110044, + 0x45CFFF4A, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E391E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110045, + 0x46D2FF4B, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, + 0x46D2FF4C, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3E3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110046, + 0x47D5FF4D, 0x00000000, 0x000D0014, 0x00110007, 0x00140000, 0x0023001B, 0x00300029, 0x00420038, 0x291E1A00, 0x382E2C2A, 0x7A3F3A1E, 0x6F6F1C2C, 0x00190009, 0x00000000, 0x00000042, 0x00110047, + 0x48D8FF4E, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1E, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120048, + 0x49DBFF4F, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7A3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x00120049, + 0x4ADEFF50, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, + 0x4ADEFF51, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004A, + 0x4BE1FF52, 0x00000000, 0x000E0015, 0x00120007, 0x00150000, 0x0025001C, 0x0033002C, 0x0046003C, 0x291E1B00, 0x392F2D2B, 0x7B3F3A1F, 0x6F6F1D2C, 0x0019000A, 0x00000000, 0x00000046, 0x0012004B, + 0x4CE4FF53, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483A1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004C, + 0x4DE7FF54, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004D, + 0x4EEAFF55, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, + 0x4EEAFF56, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B1F, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004E, + 0x4FEDFF57, 0x00000000, 0x000F0016, 0x00130007, 0x00160000, 0x0027001E, 0x0035002E, 0x004A003F, 0x2A1F1B00, 0x39382D2C, 0x7B483B28, 0x6F6F1D2D, 0x001A000A, 0x00000000, 0x0000004A, 0x0013004F, + 0x50F0FF58, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7B483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140050, + 0x51F3FF59, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, + 0x51F3FF5A, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140051, + 0x52F6FF5B, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C483B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140052, + 0x53F9FF5C, 0x00000000, 0x00100017, 0x00140008, 0x00170000, 0x0029001F, 0x00380030, 0x004E0042, 0x2A281C00, 0x3A382E2C, 0x7C493B28, 0x6F6F1E2E, 0x001A000B, 0x00000000, 0x0000004E, 0x00140053, + 0x54FCFF5D, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150054, + 0x55FFFF5E, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, + 0x55FFFF5F, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C28, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150055, + 0x57FFFF60, 0x00000000, 0x00100019, 0x00150008, 0x00190000, 0x002B0021, 0x003B0033, 0x00520046, 0x2B281D00, 0x3A392F2D, 0x7C493C29, 0x6F6F1F2E, 0x001B000B, 0x00000000, 0x00000052, 0x00150057, + 0x58FFFF61, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x00160058, + 0x5AFFFF62, 0x00000000, 0x0011001A, 0x00150009, 0x001A0000, 0x002D0022, 0x003E0035, 0x00560049, 0x2B291D00, 0x3B39382D, 0x7D493C29, 0x6F6F1F2F, 0x001B000C, 0x00000000, 0x00000056, 0x0016005A, + 0x5CFFFF63, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D493D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005C, + 0x5DFFFF64, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7D4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005D, + 0x5FFFFF65, 0x00000000, 0x0012001B, 0x00160009, 0x001B0000, 0x002F0024, 0x00410038, 0x005A004C, 0x2C291E00, 0x3B3A382E, 0x7E4A3D29, 0x6F6F2838, 0x001B000D, 0x00000000, 0x0000005A, 0x0017005F, + 0x60FFFF66, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180060, + 0x62FFFF67, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3D2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180062, + 0x63FFFF68, 0x00000000, 0x0013001C, 0x00170009, 0x001C0000, 0x00310026, 0x0044003A, 0x005E0050, 0x2C2A1E00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2838, 0x001C000D, 0x00000000, 0x0000005E, 0x00180063, + 0x65FFFF69, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190065, + 0x66FFFF6A, 0x00000000, 0x0014001D, 0x0018000A, 0x001D0000, 0x00330027, 0x0046003D, 0x00620053, 0x2D2A1F00, 0x3C3A392F, 0x7E4A3E2A, 0x6F6F2939, 0x001C000E, 0x00000000, 0x00000062, 0x00190066, + 0x68FFFF6B, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0068, + 0x69FFFF6C, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3E2A, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A0069, + 0x6BFFFF6D, 0x00000000, 0x0014001E, 0x0019000A, 0x001E0000, 0x00350029, 0x0049003F, 0x00660056, 0x2D2A1F00, 0x3D3B3938, 0x7F4B3F2B, 0x6F6F2939, 0x001D000E, 0x00000000, 0x00000066, 0x001A006B, + 0x6CFFFF6E, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x7F4B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006C, + 0x6EFFFF6F, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006E, + 0x6FFFFF70, 0x00000000, 0x00150020, 0x001A000B, 0x00200000, 0x0037002A, 0x004C0041, 0x0069005A, 0x2E2B2800, 0x3D3B3A38, 0x884B3F2B, 0x6F6F2939, 0x001D000F, 0x00000000, 0x00000069, 0x001B006F, + 0x71FFFF71, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0071, + 0x72FFFF72, 0x00000000, 0x00160021, 0x001B000B, 0x00210000, 0x0039002C, 0x004F0044, 0x006D005D, 0x2E2B2800, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E000F, 0x00000000, 0x0000006D, 0x001C0072, + 0x74FFFF73, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482B, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0074, + 0x75FFFF74, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0075, + 0x76FFFF75, 0x00000000, 0x00170022, 0x001C000B, 0x00220000, 0x003B002D, 0x00520046, 0x00710060, 0x2F2B2900, 0x3E3C3A39, 0x884C482C, 0x6F6F2A3A, 0x001E0018, 0x00000000, 0x00000071, 0x001D0076, + 0x78FFFF76, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0078, + 0x79FFFF77, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894C482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E0079, + 0x7BFFFF78, 0x00000000, 0x00170023, 0x001D000C, 0x00230000, 0x003D002F, 0x00540049, 0x00750064, 0x2F2C2900, 0x3F3D3B39, 0x894D482C, 0x6F6F2A3A, 0x001F0018, 0x00000000, 0x00000075, 0x001E007B, + 0x7DFFFF79, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492C, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007D, + 0x7FFFFF7A, 0x00000000, 0x00180024, 0x001E000C, 0x00240000, 0x003F0030, 0x0057004B, 0x00790067, 0x382C2900, 0x3F3D3B39, 0x894D492D, 0x6F6F2B3B, 0x001F0019, 0x00000000, 0x00000079, 0x001F007F, + 0x81FFFF7B, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200081, + 0x83FFFF7C, 0x00000000, 0x00190026, 0x001F000D, 0x00260000, 0x00410032, 0x005A004E, 0x007D006A, 0x382D2A00, 0x483D3B3A, 0x894D492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x0000007D, 0x00200083, + 0x86FFFF7D, 0x00000000, 0x001A0027, 0x0020000D, 0x00270000, 0x00430034, 0x005D0050, 0x0081006E, 0x382D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2B3B, 0x00280019, 0x00000000, 0x00000081, 0x00210086, + 0x88FFFF7E, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492D, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x00220088, + 0x8AFFFF7F, 0x00000000, 0x001B0028, 0x0021000D, 0x00280000, 0x00450035, 0x00600052, 0x00850071, 0x392D2A00, 0x483E3C3A, 0x8A4E492E, 0x6F6F2C3C, 0x0028001A, 0x00000000, 0x00000085, 0x0022008A, + 0x8CFFFF80, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4E4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008C, + 0x8EFFFF81, 0x00000000, 0x001B0029, 0x0022000E, 0x00290000, 0x00470037, 0x00620055, 0x00890074, 0x392E2A00, 0x493F3C3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x00000089, 0x0023008E, + 0x90FFFF82, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240090, + 0x92FFFF83, 0x00000000, 0x001C002A, 0x0023000E, 0x002A0000, 0x00490038, 0x00650057, 0x008D0078, 0x392E2B00, 0x493F3D3B, 0x8A4F4A2E, 0x6F6F2C3C, 0x0029001A, 0x00000000, 0x0000008D, 0x00240092, + 0x94FFFF84, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250094, + 0x96FFFF85, 0x00000000, 0x001D002B, 0x0024000E, 0x002B0000, 0x004B003A, 0x0068005A, 0x0091007B, 0x392F2B00, 0x493F3D3B, 0x8B4F4A2F, 0x6F6F2D3D, 0x0029001A, 0x00000000, 0x00000091, 0x00250096, + 0x98FFFF86, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584A2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x00260098, + 0x9AFFFF87, 0x00000000, 0x001E002D, 0x0025000F, 0x002D0000, 0x004D003B, 0x006B005C, 0x0094007E, 0x3A2F2B00, 0x49483D3C, 0x8B584B2F, 0x6F6F2D3D, 0x0029001B, 0x00000000, 0x00000094, 0x0026009A, + 0x9CFFFF88, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B2F, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009C, + 0x9EFFFF89, 0x00000000, 0x001E002E, 0x0026000F, 0x002E0000, 0x004F003D, 0x006E005E, 0x00980081, 0x3A2F2C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2D3D, 0x002A001B, 0x00000000, 0x00000098, 0x0027009E, + 0xA1FFFF8A, 0x00000000, 0x001F002F, 0x00270010, 0x002F0000, 0x0051003F, 0x00710061, 0x009C0085, 0x3A382C00, 0x4A483E3C, 0x8B584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x0000009C, 0x002800A1, + 0xA4FFFF8B, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C584B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A4, + 0xA6FFFF8C, 0x00000000, 0x00200030, 0x00280010, 0x00300000, 0x00530040, 0x00730063, 0x00A00088, 0x3A382C00, 0x4A493E3C, 0x8C594B38, 0x6F6F2E3E, 0x002A001B, 0x00000000, 0x000000A0, 0x002900A6, + 0xA9FFFF8D, 0x00000000, 0x00210031, 0x00290010, 0x00310000, 0x00550042, 0x00760066, 0x00A4008B, 0x3B382C00, 0x4A493F3D, 0x8C594C38, 0x6F6F2E3E, 0x002A001C, 0x00000000, 0x000000A4, 0x002A00A9, + 0xACFFFF8E, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C38, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AC, + 0xAEFFFF8F, 0x00000000, 0x00220032, 0x002A0011, 0x00320000, 0x00570043, 0x00790068, 0x00A8008F, 0x3B382D00, 0x4B493F3D, 0x8C594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000A8, 0x002B00AE, + 0xB1FFFF90, 0x00000000, 0x00220034, 0x002B0011, 0x00340000, 0x00590045, 0x007C006B, 0x00AC0092, 0x3B392D00, 0x4B49483D, 0x8D594C39, 0x6F6F2F3F, 0x002B001C, 0x00000000, 0x000000AC, 0x002C00B1, + 0xB4FFFF91, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B4, + 0xB6FFFF92, 0x00000000, 0x00230035, 0x002C0012, 0x00350000, 0x005B0046, 0x007F006D, 0x00B00095, 0x3B392D00, 0x4B49483E, 0x8D594C39, 0x6F6F383F, 0x002B001D, 0x00000000, 0x000000B0, 0x002D00B6, + 0xB9FFFF93, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00B9, + 0xBBFFFF94, 0x00000000, 0x00240036, 0x002D0012, 0x00360000, 0x005D0048, 0x0081006F, 0x00B40099, 0x3C392E00, 0x4B4A483E, 0x8D5A4D39, 0x6F6F3848, 0x002B001D, 0x00000000, 0x000000B4, 0x002E00BB, + 0xBEFFFF95, 0x00000000, 0x00250037, 0x002E0012, 0x00370000, 0x005F0049, 0x00840072, 0x00B8009C, 0x3C392E00, 0x4C4A483E, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000B8, 0x002F00BE, + 0xC0FFFF96, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D39, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C0, + 0xC3FFFF97, 0x00000000, 0x00260038, 0x002F0013, 0x00380000, 0x0062004B, 0x00870074, 0x00BC009F, 0x3C392E00, 0x4C4A483F, 0x8E5A4D3A, 0x6F6F3848, 0x002C001D, 0x00000000, 0x000000BC, 0x003000C3, + 0xC7FFFF98, 0x00000000, 0x00260039, 0x00300013, 0x00390000, 0x0064004D, 0x008A0077, 0x00BF00A3, 0x3D3A2E00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3848, 0x002C001E, 0x00000000, 0x000000BF, 0x003100C7, + 0xCAFFFF99, 0x00000000, 0x0027003B, 0x00310014, 0x003B0000, 0x0066004E, 0x008D0079, 0x00C300A6, 0x3D3A2F00, 0x4C4A493F, 0x8E5A4E3A, 0x6F6F3949, 0x002C001E, 0x00000000, 0x000000C3, 0x003200CA, + 0xCDFFFF9A, 0x00000000, 0x0028003C, 0x00320014, 0x003C0000, 0x00680050, 0x008F007C, 0x00C700A9, 0x3D3A2F00, 0x4C4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000C7, 0x003300CD, + 0xD0FFFF9B, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D0, + 0xD3FFFF9C, 0x00000000, 0x0029003D, 0x00330014, 0x003D0000, 0x006A0051, 0x0092007E, 0x00CB00AD, 0x3D3A2F00, 0x4D4B4948, 0x8F5B4E3A, 0x6F6F3949, 0x002D001E, 0x00000000, 0x000000CB, 0x003400D3, + 0xD6FFFF9D, 0x00000000, 0x0029003E, 0x00340015, 0x003E0000, 0x006C0053, 0x00950080, 0x00CF00B0, 0x3E3A3800, 0x4D4B4948, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000CF, 0x003500D6, + 0xD9FFFF9E, 0x00000000, 0x002A003F, 0x00350015, 0x003F0000, 0x006E0054, 0x00980083, 0x00D300B3, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002D001F, 0x00000000, 0x000000D3, 0x003600D9, + 0xDCFFFF9F, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DC, + 0xDFFFFFA0, 0x00000000, 0x002B0040, 0x00360015, 0x00400000, 0x00700056, 0x009B0085, 0x00D700B7, 0x3E3B3800, 0x4D4B4A48, 0x8F5B4F3B, 0x6F6F3949, 0x002E001F, 0x00000000, 0x000000D7, 0x003700DF, + 0xE2FFFFA1, 0x00000000, 0x002C0042, 0x00370016, 0x00420000, 0x00720058, 0x009E0088, 0x00DB00BA, 0x3E3B3800, 0x4E4C4A49, 0x8F5C4F3B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DB, 0x003800E2, + 0xE6FFFFA2, 0x00000000, 0x002D0043, 0x00380016, 0x00430000, 0x00740059, 0x00A0008A, 0x00DF00BD, 0x3F3B3800, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000DF, 0x003900E6, + 0xE9FFFFA3, 0x00000000, 0x002D0044, 0x00390017, 0x00440000, 0x0076005B, 0x00A3008C, 0x00E300C1, 0x3F3B3900, 0x4E4C4A49, 0x8F5C583B, 0x6F6F3A4A, 0x002E0028, 0x00000000, 0x000000E3, 0x003A00E9, + 0xEDFFFFA4, 0x00000000, 0x002E0045, 0x003A0017, 0x00450000, 0x0078005C, 0x00A6008F, 0x00E600C4, 0x3F3C3900, 0x4E4C4A49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000E6, 0x003B00ED, + 0xF0FFFFA5, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F0, + 0xF3FFFFA6, 0x00000000, 0x002F0046, 0x003B0017, 0x00460000, 0x007A005E, 0x00A90091, 0x00EA00C7, 0x3F3C3900, 0x4F4C4B49, 0x8F5C583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EA, 0x003C00F3, + 0xF7FFFFA7, 0x00000000, 0x00300047, 0x003C0018, 0x00470000, 0x007C005F, 0x00AC0094, 0x00EE00CB, 0x483C3900, 0x4F4D4B49, 0x8F5D583C, 0x6F6F3A4A, 0x002F0028, 0x00000000, 0x000000EE, 0x003D00F7, + 0xFAFFFFA8, 0x00000000, 0x00300049, 0x003D0018, 0x00490000, 0x007E0061, 0x00AE0096, 0x00F200CE, 0x483C3900, 0x4F4D4B49, 0x8F5D593C, 0x6F6F3B4B, 0x002F0029, 0x00000000, 0x000000F2, 0x003E00FA, + 0xFDFFFFA9, 0x00000000, 0x0031004A, 0x003E0019, 0x004A0000, 0x00800062, 0x00B10099, 0x00F600D1, 0x483C3900, 0x4F4D4B4A, 0x8F5D593C, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000F6, 0x003F00FD, + 0xFFFFFFAA, 0x00000000, 0x0032004B, 0x003F0019, 0x004B0000, 0x00820064, 0x00B4009B, 0x00FA00D5, 0x483D3900, 0x584D4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FA, 0x00400101, + 0xFFFFFFAB, 0x00000000, 0x0033004C, 0x003F0019, 0x004C0000, 0x00840066, 0x00B7009D, 0x00FE00D8, 0x483D3A00, 0x584E4B4A, 0x8F5D593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x000000FE, 0x00410105, + 0xFFFFFFAC, 0x00000000, 0x0034004D, 0x0040001A, 0x004D0000, 0x00860067, 0x00BA00A0, 0x010200DB, 0x483D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3B4B, 0x00380029, 0x00000000, 0x00000102, 0x00420109, + 0xFFFFFFAD, 0x00000000, 0x0034004F, 0x0041001A, 0x004F0000, 0x00880069, 0x00BC00A2, 0x010600DE, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4B, 0x00380029, 0x00000000, 0x00000106, 0x0043010D, + 0xFFFFFFAE, 0x00000000, 0x00350050, 0x0042001B, 0x00500000, 0x008A006A, 0x00BF00A5, 0x010A00E2, 0x493D3A00, 0x584E4C4A, 0x8F5E593D, 0x6F6F3C4C, 0x00380029, 0x00000000, 0x0000010A, 0x00440110, + 0xFFFFFFAF, 0x00000000, 0x00360051, 0x0043001B, 0x00510000, 0x008C006C, 0x00C200A7, 0x010E00E5, 0x493E3A00, 0x584E4C4A, 0x8F5E593E, 0x6F6F3C4C, 0x0038002A, 0x00000000, 0x0000010E, 0x00450114, + 0xFFFFFFB0, 0x00000000, 0x00370052, 0x0044001B, 0x00520000, 0x008E006D, 0x00C500AA, 0x011100E8, 0x493E3A00, 0x594F4C4B, 0x8F5E5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000111, 0x00460118, + 0xFFFFFFB1, 0x00000000, 0x00370053, 0x0045001C, 0x00530000, 0x0090006F, 0x00C800AC, 0x011500EC, 0x493E3A00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000115, 0x0047011C, + 0xFFFFFFB2, 0x00000000, 0x00380054, 0x0046001C, 0x00540000, 0x00920071, 0x00CB00AE, 0x011900EF, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3C4C, 0x0039002A, 0x00000000, 0x00000119, 0x00480120, + 0xFFFFFFB3, 0x00000000, 0x00390056, 0x0047001D, 0x00560000, 0x00940072, 0x00CD00B1, 0x011D00F2, 0x493E3B00, 0x594F4D4B, 0x8F5F5A3E, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x0000011D, 0x00490124, + 0xFFFFFFB4, 0x00000000, 0x003A0057, 0x0048001D, 0x00570000, 0x00960074, 0x00D000B3, 0x012100F6, 0x493F3B00, 0x594F4D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000121, 0x004A0128, + 0xFFFFFFB5, 0x00000000, 0x003B0058, 0x0049001D, 0x00580000, 0x00980075, 0x00D300B6, 0x012500F9, 0x4A3F3B00, 0x59584D4B, 0x8F5F5A3F, 0x6F6F3D4D, 0x0039002A, 0x00000000, 0x00000125, 0x004B012C, + 0xFFFFFFB6, 0x00000000, 0x003B0059, 0x004A001E, 0x00590000, 0x009A0077, 0x00D600B8, 0x012900FC, 0x4A3F3B00, 0x59584D4C, 0x8F685A3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x00000129, 0x004C0130, + 0xFFFFFFB7, 0x00000000, 0x003C005A, 0x004B001E, 0x005A0000, 0x009C0078, 0x00D900BA, 0x012D0100, 0x4A3F3B00, 0x59584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x0039002B, 0x00000000, 0x0000012D, 0x004D0135, + 0xFFFFFFB8, 0x00000000, 0x003D005B, 0x004C001E, 0x005B0000, 0x009E007A, 0x00DB00BD, 0x01310103, 0x4A3F3B00, 0x5A584E4C, 0x8F685B3F, 0x6F6F3D4D, 0x003A002B, 0x00000000, 0x00000131, 0x004E0139, + 0xFFFFFFB9, 0x00000000, 0x003E005D, 0x004D001F, 0x005D0000, 0x00A0007B, 0x00DE00BF, 0x01350106, 0x4A3F3C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000135, 0x004F013D, + 0xFFFFFFBA, 0x00000000, 0x003F005E, 0x004E001F, 0x005E0000, 0x00A3007D, 0x00E100C2, 0x0139010A, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000139, 0x00500142, + 0xFFFFFFBB, 0x00000000, 0x003F005F, 0x004F0020, 0x005F0000, 0x00A5007F, 0x00E400C4, 0x013C010D, 0x4A483C00, 0x5A584E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x0000013C, 0x00510146, + 0xFFFFFFBC, 0x00000000, 0x00400060, 0x00500020, 0x00600000, 0x00A70080, 0x00E700C7, 0x01400110, 0x4A483C00, 0x5A594E4C, 0x8F685B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000140, 0x0052014A, + 0xFFFFFFBD, 0x00000000, 0x00410061, 0x00510020, 0x00610000, 0x00A90082, 0x00E900C9, 0x01440114, 0x4B483C00, 0x5A594F4D, 0x8F695B48, 0x6F6F3E4E, 0x003A002B, 0x00000000, 0x00000144, 0x0053014F, + 0xFFFFFFBE, 0x00000000, 0x00420064, 0x00530021, 0x00640000, 0x00AD0085, 0x00EF00CE, 0x014C011A, 0x4B483D00, 0x5A594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003A002C, 0x00000000, 0x0000014C, 0x00550154, + 0xFFFFFFBF, 0x00000000, 0x00430065, 0x00540022, 0x00650000, 0x00AF0086, 0x00F200D0, 0x0150011E, 0x4B483D00, 0x5B594F4D, 0x8F695C48, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000150, 0x00560158, + 0xFFFFFFC0, 0x00000000, 0x00440066, 0x00550022, 0x00660000, 0x00B10088, 0x00F500D3, 0x01540121, 0x4B493D00, 0x5B594F4D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000154, 0x0057015D, + 0xFFFFFFC1, 0x00000000, 0x00450067, 0x00560022, 0x00670000, 0x00B3008A, 0x00F800D5, 0x01580124, 0x4B493D00, 0x5B59584D, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x00000158, 0x00580162, + 0xFFFFFFC2, 0x00000000, 0x00460068, 0x00570023, 0x00680000, 0x00B5008B, 0x00FA00D8, 0x015C0128, 0x4B493D00, 0x5B59584E, 0x8F695C49, 0x6F6F3F4F, 0x003B002C, 0x00000000, 0x0000015C, 0x00590167, + 0xFFFFFFC3, 0x00000000, 0x0047006B, 0x00590024, 0x006B0000, 0x00B9008E, 0x010000DC, 0x0163012E, 0x4C493D00, 0x5B59584E, 0x8F695C49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000163, 0x005B016C, + 0xFFFFFFC4, 0x00000000, 0x0048006C, 0x005A0024, 0x006C0000, 0x00BB0090, 0x010300DF, 0x01670131, 0x4C493E00, 0x5B5A584E, 0x8F695D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x00000167, 0x005C0171, + 0xFFFFFFC5, 0x00000000, 0x0049006D, 0x005B0024, 0x006D0000, 0x00BD0091, 0x010600E1, 0x016B0135, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003B002D, 0x00000000, 0x0000016B, 0x005D0176, + 0xFFFFFFC6, 0x00000000, 0x0049006E, 0x005C0025, 0x006E0000, 0x00BF0093, 0x010800E4, 0x016F0138, 0x4C493E00, 0x5B5A584E, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000016F, 0x005E017B, + 0xFFFFFFC7, 0x00000000, 0x004B0071, 0x005E0026, 0x00710000, 0x00C30096, 0x010E00E9, 0x0177013F, 0x4C493E00, 0x5C5A584F, 0x8F6A5D49, 0x6F6F4858, 0x003C002D, 0x00000000, 0x00000177, 0x00600180, + 0xFFFFFFC8, 0x00000000, 0x004C0072, 0x005F0026, 0x00720000, 0x00C50098, 0x011100EB, 0x017B0142, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5D4A, 0x6F6F4858, 0x003C002D, 0x00000000, 0x0000017B, 0x00610185, + 0xFFFFFFC9, 0x00000000, 0x004D0073, 0x00600026, 0x00730000, 0x00C70099, 0x011400ED, 0x017F0145, 0x4C4A3E00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4858, 0x003C002E, 0x00000000, 0x0000017F, 0x0062018B, + 0xFFFFFFCA, 0x00000000, 0x004E0075, 0x00620027, 0x00750000, 0x00CB009C, 0x011900F2, 0x0187014C, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x00000187, 0x00640190, + 0xFFFFFFCB, 0x00000000, 0x004F0076, 0x00630027, 0x00760000, 0x00CD009E, 0x011C00F5, 0x018B014F, 0x4D4A3F00, 0x5C5A594F, 0x8F6A5E4A, 0x6F6F4959, 0x003C002E, 0x00000000, 0x0000018B, 0x00650196, + 0xFFFFFFCC, 0x00000000, 0x00500078, 0x00640028, 0x00780000, 0x00CF009F, 0x011F00F7, 0x018E0153, 0x4D4A3F00, 0x5C5B594F, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000018E, 0x0066019B, + 0xFFFFFFCD, 0x00000000, 0x0051007A, 0x00660029, 0x007A0000, 0x00D300A3, 0x012500FC, 0x01960159, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x00000196, 0x006801A1, + 0xFFFFFFCE, 0x00000000, 0x0052007B, 0x00670029, 0x007B0000, 0x00D500A4, 0x012700FE, 0x019A015D, 0x4D4A3F00, 0x5D5B5958, 0x8F6B5E4A, 0x6F6F4959, 0x003D002E, 0x00000000, 0x0000019A, 0x006901A7, + 0xFFFFFFCF, 0x00000000, 0x0054007D, 0x0068002A, 0x007D0000, 0x00D900A7, 0x012D0103, 0x01A20163, 0x4E4A4800, 0x5D5B5958, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A2, 0x006B01AD, + 0xFFFFFFD0, 0x00000000, 0x0054007F, 0x0069002A, 0x007F0000, 0x00DB00A9, 0x01300106, 0x01A60167, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001A6, 0x006C01B3, + 0xFFFFFFD1, 0x00000000, 0x00560081, 0x006B002B, 0x00810000, 0x00DF00AC, 0x0135010A, 0x01AE016D, 0x4E4B4800, 0x5D5B5A58, 0x8F6B5F4B, 0x6F6F4959, 0x003D002F, 0x00000000, 0x000001AE, 0x006E01B9, + 0xFFFFFFD2, 0x00000000, 0x00570082, 0x006C002B, 0x00820000, 0x00E100AD, 0x0138010D, 0x01B20171, 0x4E4B4800, 0x5E5C5A58, 0x8F6B5F4B, 0x6F6F4A5A, 0x003E002F, 0x00000000, 0x000001B2, 0x006F01BF, + 0xFFFFFFD3, 0x00000000, 0x00580084, 0x006E002C, 0x00840000, 0x00E600B1, 0x013E0112, 0x01B90177, 0x4E4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001B9, 0x007101C6, + 0xFFFFFFD4, 0x00000000, 0x005A0087, 0x0070002D, 0x00870000, 0x00EA00B4, 0x01430117, 0x01C1017E, 0x4F4B4800, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C1, 0x007301CD, + 0xFFFFFFD5, 0x00000000, 0x005B0088, 0x0071002D, 0x00880000, 0x00EC00B5, 0x01460119, 0x01C50181, 0x4F4B4900, 0x5E5C5A59, 0x8F6C684B, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001C5, 0x007401D3, + 0xFFFFFFD6, 0x00000000, 0x005C008A, 0x0073002E, 0x008A0000, 0x00F000B8, 0x014C011E, 0x01CD0188, 0x4F4C4900, 0x5E5C5A59, 0x8F6C684C, 0x6F6F4A5A, 0x003E0038, 0x00000000, 0x000001CD, 0x007601DB, + 0xFFFFFFD7, 0x00000000, 0x005E008D, 0x0075002F, 0x008D0000, 0x00F400BC, 0x01520123, 0x01D5018E, 0x4F4C4900, 0x5F5C5B59, 0x8F6C684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001D5, 0x007801E2, + 0xFFFFFFD8, 0x00000000, 0x005F008F, 0x00770030, 0x008F0000, 0x00F800BF, 0x01570127, 0x01DD0195, 0x584C4900, 0x5F5D5B59, 0x8F6D684C, 0x6F6F4A5A, 0x003F0038, 0x00000000, 0x000001DD, 0x007A01E9, + 0xFFFFFFD9, 0x00000000, 0x00610091, 0x00790030, 0x00910000, 0x00FC00C2, 0x015D012C, 0x01E4019C, 0x584C4900, 0x5F5D5B59, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001E4, 0x007C01F1, + 0xFFFFFFDA, 0x00000000, 0x00620094, 0x007B0031, 0x00940000, 0x010000C5, 0x01620131, 0x01EC01A2, 0x584C4900, 0x5F5D5B5A, 0x8F6D694C, 0x6F6F4B5B, 0x003F0039, 0x00000000, 0x000001EC, 0x007E01F9, + 0xFFFFFFDB, 0x00000000, 0x00640096, 0x007D0032, 0x00960000, 0x010400C8, 0x01680136, 0x01F401A9, 0x584D4900, 0x685D5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001F4, 0x00800201, + 0xFFFFFFDC, 0x00000000, 0x00660098, 0x007F0033, 0x00980000, 0x010800CB, 0x016E013B, 0x01FC01B0, 0x584D4A00, 0x685E5B5A, 0x8F6D694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x000001FC, 0x0082020A, + 0xFFFFFFDD, 0x00000000, 0x0067009B, 0x00810034, 0x009B0000, 0x010C00CE, 0x01730140, 0x020401B6, 0x584D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x00000204, 0x00840212, + 0xFFFFFFDE, 0x00000000, 0x0069009D, 0x00830034, 0x009D0000, 0x011000D1, 0x01790145, 0x020B01BD, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4B5B, 0x00480039, 0x00000000, 0x0000020B, 0x0086021B, + 0xFFFFFFDF, 0x00000000, 0x006B00A1, 0x00860036, 0x00A10000, 0x011600D6, 0x0181014C, 0x021701C7, 0x594D4A00, 0x685E5C5A, 0x8F6E694D, 0x6F6F4C5C, 0x00480039, 0x00000000, 0x00000217, 0x00890225, + 0xFFFFFFE0, 0x00000000, 0x006D00A3, 0x00880036, 0x00A30000, 0x011A00D9, 0x01870151, 0x021F01CE, 0x594E4A00, 0x685E5C5B, 0x8F6E6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000021F, 0x008B022F, + 0xFFFFFFE1, 0x00000000, 0x006F00A6, 0x008B0037, 0x00A60000, 0x012000DE, 0x018F0158, 0x022B01D7, 0x594E4A00, 0x695F5C5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x0000022B, 0x008E0239, + 0xFFFFFFE2, 0x00000000, 0x007100A9, 0x008D0038, 0x00A90000, 0x012500E1, 0x0195015D, 0x023301DE, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4C5C, 0x0049003A, 0x00000000, 0x00000233, 0x00900243, + 0xFFFFFFE3, 0x00000000, 0x007300AC, 0x00900039, 0x00AC0000, 0x012B00E6, 0x019D0164, 0x023E01E8, 0x594E4B00, 0x695F5D5B, 0x8F6F6A4E, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000023E, 0x0093024E, + 0xFFFFFFE4, 0x00000000, 0x007500B0, 0x0092003B, 0x00B00000, 0x013100EA, 0x01A6016B, 0x024A01F2, 0x5A4F4B00, 0x69685D5B, 0x8F6F6A4F, 0x6F6F4D5D, 0x0049003A, 0x00000000, 0x0000024A, 0x0096025A, + 0xFFFFFFE5, 0x00000000, 0x007800B3, 0x0095003C, 0x00B30000, 0x013700EF, 0x01AE0173, 0x025601FC, 0x5A4F4B00, 0x69685D5C, 0x8F786B4F, 0x6F6F4D5D, 0x0049003B, 0x00000000, 0x00000256, 0x00990266, + 0xFFFFFFE6, 0x00000000, 0x007A00B7, 0x0098003D, 0x00B70000, 0x013D00F4, 0x01B7017A, 0x02610206, 0x5A4F4B00, 0x6A685E5C, 0x8F786B4F, 0x6F6F4D5D, 0x004A003B, 0x00000000, 0x00000261, 0x009C0272, + 0xFFFFFFE7, 0x00000000, 0x007D00BC, 0x009C003F, 0x00BC0000, 0x014500FA, 0x01C20184, 0x02710213, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x00000271, 0x00A00280, + 0xFFFFFFE8, 0x00000000, 0x007F00BF, 0x009F0040, 0x00BF0000, 0x014B00FF, 0x01CA018B, 0x027D021D, 0x5A584C00, 0x6A685E5C, 0x8F786B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000027D, 0x00A3028E, + 0xFFFFFFE9, 0x00000000, 0x008200C4, 0x00A30041, 0x00C40000, 0x01530105, 0x01D60194, 0x028C022A, 0x5B584C00, 0x6A695F5D, 0x8F796B58, 0x6F6F4E5E, 0x004A003B, 0x00000000, 0x0000028C, 0x00A7029C, + 0xFFFFFFEA, 0x00000000, 0x008600C8, 0x00A70043, 0x00C80000, 0x015B010B, 0x01E1019E, 0x029C0238, 0x5B584D00, 0x6A695F5D, 0x8F796C58, 0x6F6F4F5F, 0x004A003C, 0x00000000, 0x0000029C, 0x00AB02AC, + 0xFFFFFFEB, 0x00000000, 0x008900CD, 0x00AB0044, 0x00CD0000, 0x01630111, 0x01EC01A8, 0x02AC0245, 0x5B594D00, 0x6B695F5D, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002AC, 0x00AF02BC, + 0xFFFFFFEC, 0x00000000, 0x008C00D2, 0x00AF0046, 0x00D20000, 0x016C0118, 0x01F701B2, 0x02BB0252, 0x5B594D00, 0x6B69685E, 0x8F796C59, 0x6F6F4F5F, 0x004B003C, 0x00000000, 0x000002BB, 0x00B302CD, + 0xFFFFFFED, 0x00000000, 0x009000D8, 0x00B40048, 0x00D80000, 0x01760120, 0x020601BE, 0x02CF0263, 0x5C594E00, 0x6B6A685E, 0x8F796D59, 0x6F6F5868, 0x004B003D, 0x00000000, 0x000002CF, 0x00B802E0, + 0xFFFFFFEE, 0x00000000, 0x009300DC, 0x00B80049, 0x00DC0000, 0x017E0126, 0x021101C7, 0x02DE0270, 0x5C594E00, 0x6B6A685E, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002DE, 0x00BC02F3, + 0xFFFFFFEF, 0x00000000, 0x009700E2, 0x00BC004B, 0x00E20000, 0x0188012E, 0x021F01D3, 0x02F20281, 0x5C594E00, 0x6C6A685F, 0x8F7A6D59, 0x6F6F5868, 0x004C003D, 0x00000000, 0x000002F2, 0x00C10307, + 0xFFFFFFF0, 0x00000000, 0x009B00E9, 0x00C2004E, 0x00E90000, 0x01940137, 0x023001E2, 0x03090295, 0x5D5A4F00, 0x6C6A695F, 0x8F7A6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x00000309, 0x00C7031C, + 0xFFFFFFF1, 0x00000000, 0x009F00EF, 0x00C70050, 0x00EF0000, 0x019E013F, 0x023E01EE, 0x031D02A5, 0x5D5A4F00, 0x6C6B695F, 0x8F7B6E5A, 0x6F6F5969, 0x004C003E, 0x00000000, 0x0000031D, 0x00CC0333, + 0xFFFFFFF2, 0x00000000, 0x00A400F6, 0x00CD0052, 0x00F60000, 0x01AB0148, 0x024F01FD, 0x033402B9, 0x5D5A4F00, 0x6D6B6968, 0x8F7B6E5A, 0x6F6F5969, 0x004D003E, 0x00000000, 0x00000334, 0x00D2034B, + 0xFFFFFFF3, 0x00000000, 0x00AA00FE, 0x00D40055, 0x00FE0000, 0x01B90153, 0x0262020E, 0x035002D1, 0x5E5B5800, 0x6D6B6A68, 0x8F7B6F5B, 0x6F6F5969, 0x004D003F, 0x00000000, 0x00000350, 0x00D90365, + 0xFFFFFFF4, 0x00000000, 0x00AF0107, 0x00DB0058, 0x01070000, 0x01C7015E, 0x0276021F, 0x036B02E8, 0x5E5B5800, 0x6E6C6A68, 0x8F7B6F5B, 0x6F6F5A6A, 0x004E003F, 0x00000000, 0x0000036B, 0x00E00380, + 0xFFFFFFF5, 0x00000000, 0x00B4010F, 0x00E2005A, 0x010F0000, 0x01D50169, 0x028A022F, 0x038602FF, 0x5F5B5800, 0x6E6C6A69, 0x8F7C785B, 0x6F6F5A6A, 0x004E0048, 0x00000000, 0x00000386, 0x00E7039D, + 0xFFFFFFF6, 0x00000000, 0x00BA0117, 0x00E8005D, 0x01170000, 0x01E30174, 0x029D0240, 0x03A20316, 0x5F5C5900, 0x6F6C6A69, 0x8F7C785C, 0x6F6F5A6A, 0x004F0048, 0x00000000, 0x000003A2, 0x00EE03BB, + 0xFFFFFFF7, 0x00000000, 0x00C10121, 0x00F10060, 0x01210000, 0x01F60182, 0x02B70256, 0x03C50334, 0x685C5900, 0x6F6D6B69, 0x8F7D785C, 0x6F6F5B6B, 0x004F0048, 0x00000000, 0x000003C5, 0x00F703DC, + 0xFFFFFFF8, 0x00000000, 0x00C7012B, 0x00F90064, 0x012B0000, 0x0206018E, 0x02CD026A, 0x03E4034F, 0x685C5900, 0x6F6D6B6A, 0x8F7D795C, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x000003E4, 0x00FF03FE, + 0xFFFFFFF9, 0x00000000, 0x00CE0135, 0x01020067, 0x01350000, 0x0218019D, 0x02E7027F, 0x0407036D, 0x685D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5B6B, 0x00580049, 0x00000000, 0x00000407, 0x01080422, + 0xFFFFFFFA, 0x00000000, 0x00D60141, 0x010C006B, 0x01410000, 0x022D01AC, 0x03030298, 0x042E038E, 0x695D5A00, 0x6F6E6C6A, 0x8F7E795D, 0x6F6F5C6C, 0x00580049, 0x00000000, 0x0000042E, 0x0112044A, + 0xFFFFFFFB, 0x00000000, 0x00DE014D, 0x0115006F, 0x014D0000, 0x024101BC, 0x031F02B0, 0x045503AF, 0x695E5A00, 0x6F6F6C6B, 0x8F7F7A5E, 0x6F6F5C6C, 0x0059004A, 0x00000000, 0x00000455, 0x011C0473, + 0xFFFFFFFC, 0x00000000, 0x00E7015B, 0x01210074, 0x015B0000, 0x025901CF, 0x034102CD, 0x048403D7, 0x695E5B00, 0x6F6F6D6B, 0x8F7F7A5E, 0x6F6F5D6D, 0x0059004A, 0x00000000, 0x00000484, 0x012804A0, + 0xFFFFFFFD, 0x00000000, 0x00F10169, 0x012D0078, 0x01690000, 0x027201E1, 0x036202EA, 0x04B303FF, 0x6A5F5B00, 0x6F6F6E6C, 0x8F887B5F, 0x6F6F5D6D, 0x0059004B, 0x00000000, 0x000004B3, 0x013404D0, + 0xFFFFFFFE, 0x00000000, 0x00FA0177, 0x0139007D, 0x01770000, 0x028A01F4, 0x03840307, 0x04E20427, 0x6A685C00, 0x6F6F6E6C, 0x8F887B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x000004E2, 0x01400502, + 0xFFFFFFFF, 0x00000000, 0x01050187, 0x01460082, 0x01870000, 0x02A6020A, 0x03AB0329, 0x05190455, 0x6B685C00, 0x6F6F6F6D, 0x8F897B68, 0x6F6F5E6E, 0x005A004B, 0x00000000, 0x00000519, 0x014E0538, +}; diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_const_def.h intel-vaapi-driver-1.7.1/src/gen9_vp9_const_def.h --- intel-vaapi-driver-1.6.2/src/gen9_vp9_const_def.h 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_const_def.h 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWAR + * + * Authors: + * Zhao, Yakui + * + */ + +#ifndef _GEN9_VP9_CONST_H +#define _GEN9_VP9_CONST_H + +extern const unsigned int vp9_fullspiral_ime_search_path_delta[14]; + +extern const unsigned int vp9_diamond_ime_search_path_delta[14]; + +extern const int vp9_brc_const_data_p_g9[4448]; +extern const int vp9_brc_const_data_i_g9[4448]; + +extern const unsigned int gen9_vp9_avs_coeffs[256]; + +extern const unsigned int intel_vp9_costlut_key[4096]; +extern const unsigned int intel_vp9_costlut_p[4096]; + +#endif diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_encapi.h intel-vaapi-driver-1.7.1/src/gen9_vp9_encapi.h --- intel-vaapi-driver-1.6.2/src/gen9_vp9_encapi.h 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_encapi.h 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Zhao Yakui + * + */ + +#ifndef _INTEL_VP9_ENC_API_H_ +#define _INTEL_VP9_ENC_API_H_ + +#include + +struct intel_encoder_context; +struct hw_context; + +extern Bool +gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); + +extern Bool +gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); + +/* buffer points to the start address of coded_buffer. It is also + * interpreted as i965_coded_buffer_segment. + */ +extern VAStatus +gen9_vp9_get_coded_status(VADriverContextP ctx, + char *buffer, + struct hw_context *hw_context); + + +#endif // _INTE_VP9_ENC_API_H_ diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder.c intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder.c --- intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder.c 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder.c 2016-06-17 01:06:24.000000000 +0000 @@ -0,0 +1,6065 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWAR + * + * Authors: + * Zhao, Yakui + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "intel_batchbuffer.h" +#include "intel_driver.h" + +#include "i965_defines.h" +#include "i965_drv_video.h" +#include "i965_encoder.h" +#include "gen9_vp9_encapi.h" +#include "gen9_vp9_encoder.h" +#include "gen9_vp9_encoder_kernels.h" +#include "vp9_probs.h" +#include "gen9_vp9_const_def.h" + +#define MAX_VP9_ENCODER_SURFACES 64 + +#define MAX_URB_SIZE 4096 /* In register */ +#define NUM_KERNELS_PER_GPE_CONTEXT 1 + +#define VP9_BRC_KBPS 1000 + +#define BRC_KERNEL_CBR 0x0010 +#define BRC_KERNEL_VBR 0x0020 +#define BRC_KERNEL_AVBR 0x0040 +#define BRC_KERNEL_CQL 0x0080 + +#define DEFAULT_MOCS 0x02 +#define VP9_PIC_STATE_BUFFER_SIZE 192 + +typedef struct _intel_kernel_header_ +{ + uint32_t reserved : 6; + uint32_t kernel_start_pointer : 26; +} intel_kernel_header; + +typedef struct _intel_vp9_kernel_header { + int nKernelCount; + intel_kernel_header PLY_DSCALE; + intel_kernel_header VP9_ME_P; + intel_kernel_header VP9_Enc_I_32x32; + intel_kernel_header VP9_Enc_I_16x16; + intel_kernel_header VP9_Enc_P; + intel_kernel_header VP9_Enc_TX; + intel_kernel_header VP9_DYS; + + intel_kernel_header VP9BRC_Intra_Distortion; + intel_kernel_header VP9BRC_Init; + intel_kernel_header VP9BRC_Reset; + intel_kernel_header VP9BRC_Update; +} intel_vp9_kernel_header; + +#define DYS_1X_FLAG 0x01 +#define DYS_4X_FLAG 0x02 +#define DYS_16X_FLAG 0x04 + +struct vp9_surface_param { + uint32_t frame_width; + uint32_t frame_height; +}; + +static uint32_t intel_convert_sign_mag(int val, int sign_bit_pos) +{ + uint32_t ret_val = 0; + if (val < 0) + { + val = -val; + ret_val = ((1 << (sign_bit_pos - 1)) | (val & ((1 << (sign_bit_pos - 1)) - 1))); + } + else + { + ret_val = val & ((1 << (sign_bit_pos - 1)) - 1); + } + return ret_val; +} + +static bool +intel_vp9_get_kernel_header_and_size( + void *pvbinary, + int binary_size, + INTEL_VP9_ENC_OPERATION operation, + int krnstate_idx, + struct i965_kernel *ret_kernel) +{ + typedef uint32_t BIN_PTR[4]; + + char *bin_start; + intel_vp9_kernel_header *pkh_table; + intel_kernel_header *pcurr_header, *pinvalid_entry, *pnext_header; + int next_krnoffset; + + if (!pvbinary || !ret_kernel) + return false; + + bin_start = (char *)pvbinary; + pkh_table = (intel_vp9_kernel_header *)pvbinary; + pinvalid_entry = &(pkh_table->VP9BRC_Update) + 1; + next_krnoffset = binary_size; + + if ((operation == INTEL_VP9_ENC_SCALING4X) || (operation == INTEL_VP9_ENC_SCALING2X)) + { + pcurr_header = &pkh_table->PLY_DSCALE; + } + else if (operation == INTEL_VP9_ENC_ME) + { + pcurr_header = &pkh_table->VP9_ME_P; + } + else if (operation == INTEL_VP9_ENC_MBENC) + { + pcurr_header = &pkh_table->VP9_Enc_I_32x32; + } + else if (operation == INTEL_VP9_ENC_DYS) + { + pcurr_header = &pkh_table->VP9_DYS; + } + else if (operation == INTEL_VP9_ENC_BRC) + { + pcurr_header = &pkh_table->VP9BRC_Intra_Distortion; + } + else + { + return false; + } + + pcurr_header += krnstate_idx; + ret_kernel->bin = (const BIN_PTR *)(bin_start + (pcurr_header->kernel_start_pointer << 6)); + + pnext_header = (pcurr_header + 1); + if (pnext_header < pinvalid_entry) + { + next_krnoffset = pnext_header->kernel_start_pointer << 6; + } + ret_kernel->size = next_krnoffset - (pcurr_header->kernel_start_pointer << 6); + + return true; +} + + +static void +gen9_free_surfaces_vp9(void **data) +{ + struct gen9_surface_vp9 *vp9_surface; + + if (!data || !*data) + return; + + vp9_surface = *data; + + if (vp9_surface->scaled_4x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_4x_surface_id, 1); + vp9_surface->scaled_4x_surface_id = VA_INVALID_SURFACE; + vp9_surface->scaled_4x_surface_obj = NULL; + } + + if (vp9_surface->scaled_16x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->scaled_16x_surface_id, 1); + vp9_surface->scaled_16x_surface_id = VA_INVALID_SURFACE; + vp9_surface->scaled_16x_surface_obj = NULL; + } + + if (vp9_surface->dys_4x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1); + vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_4x_surface_obj = NULL; + } + + if (vp9_surface->dys_16x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1); + vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_16x_surface_obj = NULL; + } + + if (vp9_surface->dys_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1); + vp9_surface->dys_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_surface_obj = NULL; + } + + free(vp9_surface); + + *data = NULL; + + return; +} + +static VAStatus +gen9_vp9_init_check_surfaces(VADriverContextP ctx, + struct object_surface *obj_surface, + struct vp9_surface_param *surface_param) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_surface_vp9 *vp9_surface; + int downscaled_width_4x, downscaled_height_4x; + int downscaled_width_16x, downscaled_height_16x; + + if (!obj_surface || !obj_surface->bo) + return VA_STATUS_ERROR_INVALID_SURFACE; + + if (obj_surface->private_data && + obj_surface->free_private_data != gen9_free_surfaces_vp9) { + obj_surface->free_private_data(&obj_surface->private_data); + obj_surface->private_data = NULL; + } + + if (obj_surface->private_data) { + /* if the frame width/height is already the same as the expected, + * it is unncessary to reallocate it. + */ + vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + if (vp9_surface->frame_width >= surface_param->frame_width || + vp9_surface->frame_height >= surface_param->frame_height) + return VA_STATUS_SUCCESS; + + obj_surface->free_private_data(&obj_surface->private_data); + obj_surface->private_data = NULL; + vp9_surface = NULL; + } + + vp9_surface = calloc(1, sizeof(struct gen9_surface_vp9)); + + if (!vp9_surface) + return VA_STATUS_ERROR_ALLOCATION_FAILED; + + vp9_surface->ctx = ctx; + obj_surface->private_data = vp9_surface; + obj_surface->free_private_data = gen9_free_surfaces_vp9; + + vp9_surface->frame_width = surface_param->frame_width; + vp9_surface->frame_height = surface_param->frame_height; + + downscaled_width_4x = ALIGN(surface_param->frame_width / 4, 16); + downscaled_height_4x = ALIGN(surface_param->frame_height / 4, 16); + + i965_CreateSurfaces(ctx, + downscaled_width_4x, + downscaled_height_4x, + VA_RT_FORMAT_YUV420, + 1, + &vp9_surface->scaled_4x_surface_id); + + vp9_surface->scaled_4x_surface_obj = SURFACE(vp9_surface->scaled_4x_surface_id); + + if (!vp9_surface->scaled_4x_surface_obj) { + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + + i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_4x_surface_obj, 1, + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); + + downscaled_width_16x = ALIGN(surface_param->frame_width / 16, 16); + downscaled_height_16x = ALIGN(surface_param->frame_height / 16, 16); + i965_CreateSurfaces(ctx, + downscaled_width_16x, + downscaled_height_16x, + VA_RT_FORMAT_YUV420, + 1, + &vp9_surface->scaled_16x_surface_id); + vp9_surface->scaled_16x_surface_obj = SURFACE(vp9_surface->scaled_16x_surface_id); + + if (!vp9_surface->scaled_16x_surface_obj) { + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + + i965_check_alloc_surface_bo(ctx, vp9_surface->scaled_16x_surface_obj, 1, + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vp9_check_dys_surfaces(VADriverContextP ctx, + struct object_surface *obj_surface, + struct vp9_surface_param *surface_param) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_surface_vp9 *vp9_surface; + int dys_width_4x, dys_height_4x; + int dys_width_16x, dys_height_16x; + + /* As this is handled after the surface checking, it is unnecessary + * to check the surface bo and vp9_priv_surface again + */ + + vp9_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (!vp9_surface) + return VA_STATUS_ERROR_INVALID_SURFACE; + + /* if the frame_width/height of dys_surface is the same as + * the expected, it is unnecessary to allocate it again + */ + if (vp9_surface->dys_frame_width == surface_param->frame_width && + vp9_surface->dys_frame_width == surface_param->frame_width) + return VA_STATUS_SUCCESS; + + if (vp9_surface->dys_4x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_4x_surface_id, 1); + vp9_surface->dys_4x_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_4x_surface_obj = NULL; + } + + if (vp9_surface->dys_16x_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_16x_surface_id, 1); + vp9_surface->dys_16x_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_16x_surface_obj = NULL; + } + + if (vp9_surface->dys_surface_obj) { + i965_DestroySurfaces(vp9_surface->ctx, &vp9_surface->dys_surface_id, 1); + vp9_surface->dys_surface_id = VA_INVALID_SURFACE; + vp9_surface->dys_surface_obj = NULL; + } + + vp9_surface->dys_frame_width = surface_param->frame_width; + vp9_surface->dys_frame_height = surface_param->frame_height; + + i965_CreateSurfaces(ctx, + surface_param->frame_width, + surface_param->frame_height, + VA_RT_FORMAT_YUV420, + 1, + &vp9_surface->dys_surface_id); + vp9_surface->dys_surface_obj = SURFACE(vp9_surface->dys_surface_id); + + if (!vp9_surface->dys_surface_obj) { + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_surface_obj, 1, + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); + + dys_width_4x = ALIGN(surface_param->frame_width / 4, 16); + dys_height_4x = ALIGN(surface_param->frame_width / 4, 16); + + i965_CreateSurfaces(ctx, + dys_width_4x, + dys_height_4x, + VA_RT_FORMAT_YUV420, + 1, + &vp9_surface->dys_4x_surface_id); + + vp9_surface->dys_4x_surface_obj = SURFACE(vp9_surface->dys_4x_surface_id); + + if (!vp9_surface->dys_4x_surface_obj) { + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_4x_surface_obj, 1, + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); + + dys_width_16x = ALIGN(surface_param->frame_width / 16, 16); + dys_height_16x = ALIGN(surface_param->frame_width / 16, 16); + i965_CreateSurfaces(ctx, + dys_width_16x, + dys_height_16x, + VA_RT_FORMAT_YUV420, + 1, + &vp9_surface->dys_16x_surface_id); + vp9_surface->dys_16x_surface_obj = SURFACE(vp9_surface->dys_16x_surface_id); + + if (!vp9_surface->dys_16x_surface_obj) { + return VA_STATUS_ERROR_ALLOCATION_FAILED; + } + + i965_check_alloc_surface_bo(ctx, vp9_surface->dys_16x_surface_obj, 1, + VA_FOURCC('N', 'V', '1', '2'), SUBSAMPLE_YUV420); + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vp9_allocate_resources(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int allocate) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct gen9_vp9_state *vp9_state; + int allocate_flag, i; + int res_size; + uint32_t frame_width_in_sb, frame_height_in_sb, frame_sb_num; + unsigned int width, height; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + /* the buffer related with BRC is not changed. So it is allocated + * based on the input parameter + */ + if (allocate) { + i965_free_gpe_resource(&vme_context->res_brc_history_buffer); + i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer); + i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer); + i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer); + i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer); + i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer); + i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer); + i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer); + + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_history_buffer, + VP9_BRC_HISTORY_BUFFER_SIZE, + "Brc History buffer"); + if (!allocate_flag) + goto failed_allocation; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_const_data_buffer, + VP9_BRC_CONSTANTSURFACE_SIZE, + "Brc Constant buffer"); + if (!allocate_flag) + goto failed_allocation; + + res_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 + + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_mbenc_curbe_write_buffer, + res_size, + "Brc Curbe write"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_pic_state_brc_read_buffer, + res_size, + "Pic State Brc_read"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_pic_state_brc_write_hfw_read_buffer, + res_size, + "Pic State Brc_write Hfw_Read"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_PIC_STATE_BUFFER_SIZE * 4; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_pic_state_hfw_write_buffer, + res_size, + "Pic State Hfw Write"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_SEGMENT_STATE_BUFFER_SIZE; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_seg_state_brc_read_buffer, + res_size, + "Segment state brc_read"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_SEGMENT_STATE_BUFFER_SIZE; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_seg_state_brc_write_buffer, + res_size, + "Segment state brc_write"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_bitstream_size_buffer, + res_size, + "Brc bitstream buffer"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_HFW_BRC_DATA_BUFFER_SIZE; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_hfw_data_buffer, + res_size, + "mfw Brc data"); + if (!allocate_flag) + goto failed_allocation; + + res_size = VP9_BRC_MMDK_PAK_BUFFER_SIZE; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_brc_mmdk_pak_buffer, + res_size, + "Brc mmdk_pak"); + if (!allocate_flag) + goto failed_allocation; + } + + /* If the width/height of allocated buffer is greater than the expected, + * it is unnecessary to allocate it again + */ + if (vp9_state->res_width >= vp9_state->frame_width && + vp9_state->res_height >= vp9_state->frame_height) { + + return VA_STATUS_SUCCESS; + } + frame_width_in_sb = ALIGN(vp9_state->frame_width, 64) / 64; + frame_height_in_sb = ALIGN(vp9_state->frame_height, 64) / 64; + frame_sb_num = frame_width_in_sb * frame_height_in_sb; + + i965_free_gpe_resource(&vme_context->res_hvd_line_buffer); + res_size = frame_width_in_sb * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_hvd_line_buffer, + res_size, + "VP9 hvd line line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer); + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_hvd_tile_line_buffer, + res_size, + "VP9 hvd tile_line line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer); + res_size = frame_width_in_sb * 18 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_deblocking_filter_line_buffer, + res_size, + "VP9 deblocking filter line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer); + res_size = frame_width_in_sb * 18 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_deblocking_filter_tile_line_buffer, + res_size, + "VP9 deblocking tile line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer); + res_size = frame_height_in_sb * 17 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_deblocking_filter_tile_col_buffer, + res_size, + "VP9 deblocking tile col"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_metadata_line_buffer); + res_size = frame_width_in_sb * 5 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_metadata_line_buffer, + res_size, + "VP9 metadata line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer); + res_size = frame_width_in_sb * 5 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_metadata_tile_line_buffer, + res_size, + "VP9 metadata tile line"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer); + res_size = frame_height_in_sb * 5 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_metadata_tile_col_buffer, + res_size, + "VP9 metadata tile col"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_prob_buffer); + res_size = 2048; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_prob_buffer, + res_size, + "VP9 prob"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_segmentid_buffer); + res_size = frame_sb_num * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_segmentid_buffer, + res_size, + "VP9 segment id"); + if (!allocate_flag) + goto failed_allocation; + + i965_zero_gpe_resource(&vme_context->res_segmentid_buffer); + + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); + res_size = 29 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_prob_delta_buffer, + res_size, + "VP9 prob delta"); + if (!allocate_flag) + goto failed_allocation; + + i965_zero_gpe_resource(&vme_context->res_segmentid_buffer); + + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); + res_size = 29 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_prob_delta_buffer, + res_size, + "VP9 prob delta"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_compressed_input_buffer); + res_size = 32 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_compressed_input_buffer, + res_size, + "VP9 compressed_input buffer"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_prob_counter_buffer); + res_size = 193 * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_prob_counter_buffer, + res_size, + "VP9 prob counter"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer); + res_size = frame_sb_num * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_tile_record_streamout_buffer, + res_size, + "VP9 tile record stream_out"); + if (!allocate_flag) + goto failed_allocation; + + i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer); + res_size = frame_sb_num * 64; + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_cu_stat_streamout_buffer, + res_size, + "VP9 CU stat stream_out"); + if (!allocate_flag) + goto failed_allocation; + + width = vp9_state->downscaled_width_4x_in_mb * 32; + height = vp9_state->downscaled_height_4x_in_mb * 16; + i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer); + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, + &vme_context->s4x_memv_data_buffer, + width, height, + ALIGN(width, 64), + "VP9 4x MEMV data"); + if (!allocate_flag) + goto failed_allocation; + + width = vp9_state->downscaled_width_4x_in_mb * 8; + height = vp9_state->downscaled_height_4x_in_mb * 16; + i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer); + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, + &vme_context->s4x_memv_distortion_buffer, + width, height, + ALIGN(width, 64), + "VP9 4x MEMV distorion"); + if (!allocate_flag) + goto failed_allocation; + + width = ALIGN(vp9_state->downscaled_width_16x_in_mb * 32, 64); + height = vp9_state->downscaled_height_16x_in_mb * 16; + i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer); + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, + &vme_context->s16x_memv_data_buffer, + width, height, + width, + "VP9 16x MEMV data"); + if (!allocate_flag) + goto failed_allocation; + + width = vp9_state->frame_width_in_mb * 16; + height = vp9_state->frame_height_in_mb * 8; + i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes); + allocate_flag = i965_gpe_allocate_2d_resource(i965->intel.bufmgr, + &vme_context->res_output_16x16_inter_modes, + width, height, + ALIGN(width, 64), + "VP9 output inter_mode"); + if (!allocate_flag) + goto failed_allocation; + + res_size = vp9_state->frame_width_in_mb * vp9_state->frame_height_in_mb * + 16 * 4; + for (i = 0; i < 2; i++) { + i965_free_gpe_resource(&vme_context->res_mode_decision[i]); + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_mode_decision[i], + res_size, + "VP9 mode decision"); + if (!allocate_flag) + goto failed_allocation; + + } + + res_size = frame_sb_num * 9 * 64; + for (i = 0; i < 2; i++) { + i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]); + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_mv_temporal_buffer[i], + res_size, + "VP9 temporal mv"); + if (!allocate_flag) + goto failed_allocation; + } + + vp9_state->mb_data_offset = ALIGN(frame_sb_num * 16, 4096) + 4096; + res_size = vp9_state->mb_data_offset + frame_sb_num * 64 * 64 + 1000; + i965_free_gpe_resource(&vme_context->res_mb_code_surface); + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_mb_code_surface, + ALIGN(res_size, 4096), + "VP9 mb_code surface"); + if (!allocate_flag) + goto failed_allocation; + + res_size = 128; + i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer); + allocate_flag = i965_allocate_gpe_resource(i965->intel.bufmgr, + &vme_context->res_pak_uncompressed_input_buffer, + ALIGN(res_size, 4096), + "VP9 pak_uncompressed_input"); + if (!allocate_flag) + goto failed_allocation; + + if (!vme_context->frame_header_data) { + /* allocate 512 bytes for generating the uncompressed header */ + vme_context->frame_header_data = calloc(1, 512); + } + + vp9_state->res_width = vp9_state->frame_width; + vp9_state->res_height = vp9_state->frame_height; + + return VA_STATUS_SUCCESS; + +failed_allocation: + return VA_STATUS_ERROR_ALLOCATION_FAILED; +} + +static void +gen9_vp9_free_resources(struct gen9_encoder_context_vp9 *vme_context) +{ + int i; + struct gen9_vp9_state *vp9_state = (struct gen9_vp9_state *) vme_context->enc_priv_state; + + if (vp9_state->brc_enabled) { + i965_free_gpe_resource(&vme_context->res_brc_history_buffer); + i965_free_gpe_resource(&vme_context->res_brc_const_data_buffer); + i965_free_gpe_resource(&vme_context->res_brc_mbenc_curbe_write_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_brc_read_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_brc_write_hfw_read_buffer); + i965_free_gpe_resource(&vme_context->res_pic_state_hfw_write_buffer); + i965_free_gpe_resource(&vme_context->res_seg_state_brc_read_buffer); + i965_free_gpe_resource(&vme_context->res_seg_state_brc_write_buffer); + i965_free_gpe_resource(&vme_context->res_brc_bitstream_size_buffer); + i965_free_gpe_resource(&vme_context->res_brc_hfw_data_buffer); + i965_free_gpe_resource(&vme_context->res_brc_mmdk_pak_buffer); + } + + i965_free_gpe_resource(&vme_context->res_hvd_line_buffer); + i965_free_gpe_resource(&vme_context->res_hvd_tile_line_buffer); + i965_free_gpe_resource(&vme_context->res_deblocking_filter_line_buffer); + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_line_buffer); + i965_free_gpe_resource(&vme_context->res_deblocking_filter_tile_col_buffer); + i965_free_gpe_resource(&vme_context->res_metadata_line_buffer); + i965_free_gpe_resource(&vme_context->res_metadata_tile_line_buffer); + i965_free_gpe_resource(&vme_context->res_metadata_tile_col_buffer); + i965_free_gpe_resource(&vme_context->res_prob_buffer); + i965_free_gpe_resource(&vme_context->res_segmentid_buffer); + i965_free_gpe_resource(&vme_context->res_prob_delta_buffer); + i965_free_gpe_resource(&vme_context->res_prob_counter_buffer); + i965_free_gpe_resource(&vme_context->res_tile_record_streamout_buffer); + i965_free_gpe_resource(&vme_context->res_cu_stat_streamout_buffer); + i965_free_gpe_resource(&vme_context->s4x_memv_data_buffer); + i965_free_gpe_resource(&vme_context->s4x_memv_distortion_buffer); + i965_free_gpe_resource(&vme_context->s16x_memv_data_buffer); + i965_free_gpe_resource(&vme_context->res_output_16x16_inter_modes); + for (i = 0; i < 2; i++) { + i965_free_gpe_resource(&vme_context->res_mode_decision[i]); + } + + for (i = 0; i < 2; i++) { + i965_free_gpe_resource(&vme_context->res_mv_temporal_buffer[i]); + } + + i965_free_gpe_resource(&vme_context->res_compressed_input_buffer); + i965_free_gpe_resource(&vme_context->res_mb_code_surface); + i965_free_gpe_resource(&vme_context->res_pak_uncompressed_input_buffer); + + if (vme_context->frame_header_data) { + free(vme_context->frame_header_data); + vme_context->frame_header_data = NULL; + } + return; +} + +static void +gen9_init_media_object_walker_parameter(struct intel_encoder_context *encoder_context, + struct vp9_encoder_kernel_walker_parameter *kernel_walker_param, + struct gpe_media_object_walker_parameter *walker_param) +{ + memset(walker_param, 0, sizeof(*walker_param)); + + walker_param->use_scoreboard = kernel_walker_param->use_scoreboard; + + walker_param->block_resolution.x = kernel_walker_param->resolution_x; + walker_param->block_resolution.y = kernel_walker_param->resolution_y; + + walker_param->global_resolution.x = kernel_walker_param->resolution_x; + walker_param->global_resolution.y = kernel_walker_param->resolution_y; + + walker_param->global_outer_loop_stride.x = kernel_walker_param->resolution_x; + walker_param->global_outer_loop_stride.y = 0; + + walker_param->global_inner_loop_unit.x = 0; + walker_param->global_inner_loop_unit.y = kernel_walker_param->resolution_y; + + walker_param->local_loop_exec_count = 0xFFFF; //MAX VALUE + walker_param->global_loop_exec_count = 0xFFFF; //MAX VALUE + + if (kernel_walker_param->no_dependency) { + walker_param->scoreboard_mask = 0; + walker_param->use_scoreboard = 0; + // Raster scan walking pattern + walker_param->local_outer_loop_stride.x = 0; + walker_param->local_outer_loop_stride.y = 1; + walker_param->local_inner_loop_unit.x = 1; + walker_param->local_inner_loop_unit.y = 0; + walker_param->local_end.x = kernel_walker_param->resolution_x - 1; + walker_param->local_end.y = 0; + } else { + walker_param->local_end.x = 0; + walker_param->local_end.y = 0; + + if (kernel_walker_param->walker_degree == VP9_45Z_DEGREE) { + // 45z degree + walker_param->scoreboard_mask = 0x0F; + + walker_param->global_loop_exec_count = 0x3FF; + walker_param->local_loop_exec_count = 0x3FF; + + walker_param->global_resolution.x = (unsigned int)(kernel_walker_param->resolution_x / 2.f) + 1; + walker_param->global_resolution.y = 2 * kernel_walker_param->resolution_y; + + walker_param->global_start.x = 0; + walker_param->global_start.y = 0; + + walker_param->global_outer_loop_stride.x = walker_param->global_resolution.x; + walker_param->global_outer_loop_stride.y = 0; + + walker_param->global_inner_loop_unit.x = 0; + walker_param->global_inner_loop_unit.y = walker_param->global_resolution.y; + + walker_param->block_resolution.x = walker_param->global_resolution.x; + walker_param->block_resolution.y = walker_param->global_resolution.y; + + walker_param->local_start.x = 0; + walker_param->local_start.y = 0; + + walker_param->local_outer_loop_stride.x = 1; + walker_param->local_outer_loop_stride.y = 0; + + walker_param->local_inner_loop_unit.x = -1; + walker_param->local_inner_loop_unit.y = 4; + + walker_param->middle_loop_extra_steps = 3; + walker_param->mid_loop_unit_x = 0; + walker_param->mid_loop_unit_y = 1; + } else { + // 26 degree + walker_param->scoreboard_mask = 0x0F; + walker_param->local_outer_loop_stride.x = 1; + walker_param->local_outer_loop_stride.y = 0; + walker_param->local_inner_loop_unit.x = -2; + walker_param->local_inner_loop_unit.y = 1; + } + } +} + +static void +gen9_add_2d_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct object_surface *obj_surface, + int is_uv_surface, + int is_media_block_rw, + unsigned int format, + int index) +{ + struct i965_gpe_resource gpe_resource; + struct i965_gpe_surface gpe_surface; + + memset(&gpe_surface, 0, sizeof(gpe_surface)); + + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); + gpe_surface.gpe_resource = &gpe_resource; + gpe_surface.is_2d_surface = 1; + gpe_surface.is_uv_surface = !!is_uv_surface; + gpe_surface.is_media_block_rw = !!is_media_block_rw; + + gpe_surface.cacheability_control = DEFAULT_MOCS; + gpe_surface.format = format; + + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); + i965_free_gpe_resource(&gpe_resource); +} + +static void +gen9_add_adv_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct object_surface *obj_surface, + int index) +{ + struct i965_gpe_resource gpe_resource; + struct i965_gpe_surface gpe_surface; + + memset(&gpe_surface, 0, sizeof(gpe_surface)); + + i965_object_surface_to_2d_gpe_resource(&gpe_resource, obj_surface); + gpe_surface.gpe_resource = &gpe_resource; + gpe_surface.is_adv_surface = 1; + gpe_surface.cacheability_control = DEFAULT_MOCS; + gpe_surface.v_direction = 2; + + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); + i965_free_gpe_resource(&gpe_resource); +} + +static void +gen9_add_buffer_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct i965_gpe_resource *gpe_buffer, + int is_raw_buffer, + unsigned int size, + unsigned int offset, + int index) +{ + struct i965_gpe_surface gpe_surface; + + memset(&gpe_surface, 0, sizeof(gpe_surface)); + + gpe_surface.gpe_resource = gpe_buffer; + gpe_surface.is_buffer = 1; + gpe_surface.is_raw_buffer = !!is_raw_buffer; + gpe_surface.cacheability_control = DEFAULT_MOCS; + gpe_surface.size = size; + gpe_surface.offset = offset; + + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); +} + +static void +gen9_add_buffer_2d_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct i965_gpe_resource *gpe_buffer, + int is_media_block_rw, + unsigned int format, + int index) +{ + struct i965_gpe_surface gpe_surface; + + memset(&gpe_surface, 0, sizeof(gpe_surface)); + + gpe_surface.gpe_resource = gpe_buffer; + gpe_surface.is_2d_surface = 1; + gpe_surface.is_media_block_rw = !!is_media_block_rw; + gpe_surface.cacheability_control = DEFAULT_MOCS; + gpe_surface.format = format; + + gen9_gpe_context_add_surface(gpe_context, &gpe_surface, index); +} + +static void +gen9_add_dri_buffer_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + dri_bo *bo, + int is_raw_buffer, + unsigned int size, + unsigned int offset, + int index) +{ + struct i965_gpe_resource gpe_resource; + + i965_dri_object_to_buffer_gpe_resource(&gpe_resource, bo); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + &gpe_resource, + is_raw_buffer, + size, + offset, + index); + + i965_free_gpe_resource(&gpe_resource); +} + +/* +static void +gen9_add_dri_buffer_2d_gpe_surface(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + dri_bo *bo, + unsigned int width, + unsigned int height, + unsigned int pitch, + int is_media_block_rw, + unsigned int format, + int index) +{ + struct i965_gpe_resource gpe_resource; + + i965_gpe_dri_object_to_2d_gpe_resource(&gpe_resource, bo, width, height, pitch); + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + &gpe_resource, + is_media_block_rw, + format, + index); + + i965_free_gpe_resource(&gpe_resource); +} +*/ + +static void +gen9_run_kernel_media_object(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *gpe_context, + int media_function, + struct gpe_media_object_parameter *param) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct vp9_encode_status_buffer_internal *status_buffer; + struct gen9_vp9_state *vp9_state; + struct gpe_mi_store_data_imm_parameter mi_store_data_imm; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + if (!vp9_state || !batch) + return; + + intel_batchbuffer_start_atomic(batch, 0x1000); + + status_buffer = &(vp9_state->status_buffer); + memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm)); + mi_store_data_imm.bo = status_buffer->bo; + mi_store_data_imm.offset = status_buffer->media_index_offset; + mi_store_data_imm.dw0 = media_function; + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm); + + intel_batchbuffer_emit_mi_flush(batch); + gen9_gpe_pipeline_setup(ctx, gpe_context, batch); + gen8_gpe_media_object(ctx, gpe_context, batch, param); + gen8_gpe_media_state_flush(ctx, gpe_context, batch); + + gen9_gpe_pipeline_end(ctx, gpe_context, batch); + + intel_batchbuffer_end_atomic(batch); + + intel_batchbuffer_flush(batch); +} + +static void +gen9_run_kernel_media_object_walker(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *gpe_context, + int media_function, + struct gpe_media_object_walker_parameter *param) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct vp9_encode_status_buffer_internal *status_buffer; + struct gen9_vp9_state *vp9_state; + struct gpe_mi_store_data_imm_parameter mi_store_data_imm; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + if (!vp9_state || !batch) + return; + + intel_batchbuffer_start_atomic(batch, 0x1000); + + intel_batchbuffer_emit_mi_flush(batch); + + status_buffer = &(vp9_state->status_buffer); + memset(&mi_store_data_imm, 0, sizeof(mi_store_data_imm)); + mi_store_data_imm.bo = status_buffer->bo; + mi_store_data_imm.offset = status_buffer->media_index_offset; + mi_store_data_imm.dw0 = media_function; + gen9_gpe_mi_store_data_imm(ctx, batch, &mi_store_data_imm); + + gen9_gpe_pipeline_setup(ctx, gpe_context, batch); + gen9_gpe_media_object_walker(ctx, gpe_context, batch, param); + gen8_gpe_media_state_flush(ctx, gpe_context, batch); + + gen9_gpe_pipeline_end(ctx, gpe_context, batch); + + intel_batchbuffer_end_atomic(batch); + + intel_batchbuffer_flush(batch); +} + +static +void gen9_vp9_set_curbe_brc(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_brc_curbe_param *param) +{ + VAEncSequenceParameterBufferVP9 *seq_param; + VAEncPictureParameterBufferVP9 *pic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *segment_param; + vp9_brc_curbe_data *cmd; + double dbps_ratio, dInputBitsPerFrame; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + pic_param = param->ppic_param; + seq_param = param->pseq_param; + segment_param = param->psegment_param; + + cmd = gen8p_gpe_context_map_curbe(gpe_context); + + if (!cmd) + return; + + memset(cmd, 0, sizeof(vp9_brc_curbe_data)); + + if (!vp9_state->dys_enabled) + { + cmd->dw0.frame_width = pic_param->frame_width_src; + cmd->dw0.frame_height = pic_param->frame_height_src; + } + else + { + cmd->dw0.frame_width = pic_param->frame_width_dst; + cmd->dw0.frame_height = pic_param->frame_height_dst; + } + + cmd->dw1.frame_type = vp9_state->picture_coding_type; + cmd->dw1.segmentation_enable = 0; + cmd->dw1.ref_frame_flags = vp9_state->ref_frame_flag; + cmd->dw1.num_tlevels = 1; + + switch(param->media_state_type) + { + case VP9_MEDIA_STATE_BRC_INIT_RESET: + { + cmd->dw3.max_level_ratiot0 = 0; + cmd->dw3.max_level_ratiot1 = 0; + cmd->dw3.max_level_ratiot2 = 0; + cmd->dw3.max_level_ratiot3 = 0; + + cmd->dw4.profile_level_max_frame = seq_param->max_frame_width * + seq_param->max_frame_height; + cmd->dw5.init_buf_fullness = vp9_state->init_vbv_buffer_fullness_in_bit; + cmd->dw6.buf_size = vp9_state->vbv_buffer_size_in_bit; + cmd->dw7.target_bit_rate = (vp9_state->target_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * + VP9_BRC_KBPS; + cmd->dw8.max_bit_rate = (vp9_state->max_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * + VP9_BRC_KBPS; + cmd->dw9.min_bit_rate = (vp9_state->min_bit_rate + VP9_BRC_KBPS - 1) / VP9_BRC_KBPS * + VP9_BRC_KBPS; + cmd->dw10.frame_ratem = vp9_state->frame_rate; + cmd->dw11.frame_rated = 1; + + cmd->dw14.avbr_accuracy = 30; + cmd->dw14.avbr_convergence = 150; + + if (encoder_context->rate_control_mode == VA_RC_CBR) + { + cmd->dw12.brc_flag = BRC_KERNEL_CBR; + cmd->dw8.max_bit_rate = cmd->dw7.target_bit_rate; + cmd->dw9.min_bit_rate = 0; + } + else if (encoder_context->rate_control_mode == VA_RC_VBR) + { + cmd->dw12.brc_flag = BRC_KERNEL_VBR; + } + else + { + cmd->dw12.brc_flag = BRC_KERNEL_CQL; + cmd->dw16.cq_level = 30; + } + cmd->dw12.gopp = seq_param->intra_period - 1; + + cmd->dw13.init_frame_width = pic_param->frame_width_src; + cmd->dw13.init_frame_height = pic_param->frame_height_src; + + cmd->dw15.min_qp = 0; + cmd->dw15.max_qp = 255; + + cmd->dw16.cq_level = 30; + + cmd->dw17.enable_dynamic_scaling = vp9_state->dys_in_use; + cmd->dw17.brc_overshoot_cbr_pct = 150; + + dInputBitsPerFrame = (double)(cmd->dw8.max_bit_rate) / (vp9_state->frame_rate); + dbps_ratio = dInputBitsPerFrame / ((double)(vp9_state->vbv_buffer_size_in_bit) / 30); + if (dbps_ratio < 0.1) + dbps_ratio = 0.1; + if (dbps_ratio > 3.5) + dbps_ratio = 3.5; + + *param->pbrc_init_reset_buf_size_in_bits = cmd->dw6.buf_size; + *param->pbrc_init_reset_input_bits_per_frame = dInputBitsPerFrame; + + cmd->dw18.pframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.90, dbps_ratio)); + cmd->dw18.pframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.66, dbps_ratio)); + cmd->dw18.pframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.46, dbps_ratio)); + cmd->dw18.pframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio)); + cmd->dw19.pframe_deviation_threshold4 = (uint32_t)(50 * pow(0.3, dbps_ratio)); + cmd->dw19.pframe_deviation_threshold5 = (uint32_t)(50 * pow(0.46, dbps_ratio)); + cmd->dw19.pframe_deviation_threshold6 = (uint32_t)(50 * pow(0.7, dbps_ratio)); + cmd->dw19.pframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio)); + + cmd->dw20.vbr_deviation_threshold0 = (uint32_t)(-50 * pow(0.9, dbps_ratio)); + cmd->dw20.vbr_deviation_threshold1 = (uint32_t)(-50 * pow(0.7, dbps_ratio)); + cmd->dw20.vbr_deviation_threshold2 = (uint32_t)(-50 * pow(0.5, dbps_ratio)); + cmd->dw20.vbr_deviation_threshold3 = (uint32_t)(-50 * pow(0.3, dbps_ratio)); + cmd->dw21.vbr_deviation_threshold4 = (uint32_t)(100 * pow(0.4, dbps_ratio)); + cmd->dw21.vbr_deviation_threshold5 = (uint32_t)(100 * pow(0.5, dbps_ratio)); + cmd->dw21.vbr_deviation_threshold6 = (uint32_t)(100 * pow(0.75, dbps_ratio)); + cmd->dw21.vbr_deviation_threshold7 = (uint32_t)(100 * pow(0.9, dbps_ratio)); + + cmd->dw22.kframe_deviation_threshold0 = (uint32_t)(-50 * pow(0.8, dbps_ratio)); + cmd->dw22.kframe_deviation_threshold1 = (uint32_t)(-50 * pow(0.6, dbps_ratio)); + cmd->dw22.kframe_deviation_threshold2 = (uint32_t)(-50 * pow(0.34, dbps_ratio)); + cmd->dw22.kframe_deviation_threshold3 = (uint32_t)(-50 * pow(0.2, dbps_ratio)); + cmd->dw23.kframe_deviation_threshold4 = (uint32_t)(50 * pow(0.2, dbps_ratio)); + cmd->dw23.kframe_deviation_threshold5 = (uint32_t)(50 * pow(0.4, dbps_ratio)); + cmd->dw23.kframe_deviation_threshold6 = (uint32_t)(50 * pow(0.66, dbps_ratio)); + cmd->dw23.kframe_deviation_threshold7 = (uint32_t)(50 * pow(0.9, dbps_ratio)); + + break; + } + case VP9_MEDIA_STATE_BRC_UPDATE: + { + cmd->dw15.min_qp = 0; + cmd->dw15.max_qp = 255; + + cmd->dw25.frame_number = param->frame_number; + + // Used in dynamic scaling. set to zero for now + cmd->dw27.hrd_buffer_fullness_upper_limit = 0; + cmd->dw28.hrd_buffer_fullness_lower_limit = 0; + + if (pic_param->pic_flags.bits.segmentation_enabled) { + cmd->dw32.seg_delta_qp0 = segment_param->seg_data[0].segment_qindex_delta; + cmd->dw32.seg_delta_qp1 = segment_param->seg_data[1].segment_qindex_delta; + cmd->dw32.seg_delta_qp2 = segment_param->seg_data[2].segment_qindex_delta; + cmd->dw32.seg_delta_qp3 = segment_param->seg_data[3].segment_qindex_delta; + + cmd->dw33.seg_delta_qp4 = segment_param->seg_data[4].segment_qindex_delta; + cmd->dw33.seg_delta_qp5 = segment_param->seg_data[5].segment_qindex_delta; + cmd->dw33.seg_delta_qp6 = segment_param->seg_data[6].segment_qindex_delta; + cmd->dw33.seg_delta_qp7 = segment_param->seg_data[7].segment_qindex_delta; + } + + //cmd->dw34.temporal_id = pPicParams->temporal_idi; + cmd->dw34.temporal_id = 0; + cmd->dw34.multi_ref_qp_check = param->multi_ref_qp_check; + + cmd->dw35.max_num_pak_passes = param->brc_num_pak_passes; + cmd->dw35.sync_async = 0; + cmd->dw35.mbrc = param->mbbrc_enabled; + if (*param->pbrc_init_current_target_buf_full_in_bits > + ((double)(*param->pbrc_init_reset_buf_size_in_bits))) { + *param->pbrc_init_current_target_buf_full_in_bits -= + (double)(*param->pbrc_init_reset_buf_size_in_bits); + cmd->dw35.overflow = 1; + } + else + cmd->dw35.overflow = 0; + + cmd->dw24.target_size = (uint32_t)(*param->pbrc_init_current_target_buf_full_in_bits); + + cmd->dw36.segmentation = pic_param->pic_flags.bits.segmentation_enabled; + + *param->pbrc_init_current_target_buf_full_in_bits += *param->pbrc_init_reset_input_bits_per_frame; + + cmd->dw38.qdelta_ydc = pic_param->luma_dc_qindex_delta; + cmd->dw38.qdelta_uvdc = pic_param->chroma_dc_qindex_delta; + cmd->dw38.qdelta_uvac = pic_param->chroma_ac_qindex_delta; + + break; + } + case VP9_MEDIA_STATE_ENC_I_FRAME_DIST: + cmd->dw2.intra_mode_disable = 0; + break; + default: + break; + } + + cmd->dw48.brc_y4x_input_bti = VP9_BTI_BRC_SRCY4X_G9; + cmd->dw49.brc_vme_coarse_intra_input_bti = VP9_BTI_BRC_VME_COARSE_INTRA_G9; + cmd->dw50.brc_history_buffer_bti = VP9_BTI_BRC_HISTORY_G9; + cmd->dw51.brc_const_data_input_bti = VP9_BTI_BRC_CONSTANT_DATA_G9; + cmd->dw52.brc_distortion_bti = VP9_BTI_BRC_DISTORTION_G9; + cmd->dw53.brc_mmdk_pak_output_bti = VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9; + cmd->dw54.brc_enccurbe_input_bti = VP9_BTI_BRC_MBENC_CURBE_INPUT_G9; + cmd->dw55.brc_enccurbe_output_bti = VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9; + cmd->dw56.brc_pic_state_input_bti = VP9_BTI_BRC_PIC_STATE_INPUT_G9; + cmd->dw57.brc_pic_state_output_bti = VP9_BTI_BRC_PIC_STATE_OUTPUT_G9; + cmd->dw58.brc_seg_state_input_bti = VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9; + cmd->dw59.brc_seg_state_output_bti = VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9; + cmd->dw60.brc_bitstream_size_data_bti = VP9_BTI_BRC_BITSTREAM_SIZE_G9; + cmd->dw61.brc_hfw_data_output_bti = VP9_BTI_BRC_HFW_DATA_G9; + + gen8p_gpe_context_unmap_curbe(gpe_context); + return; +} + +static void +gen9_brc_init_reset_add_surfaces_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *gpe_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + &vme_context->res_brc_history_buffer, + 0, + vme_context->res_brc_history_buffer.size, + 0, + VP9_BTI_BRC_HISTORY_G9); + + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + &vme_context->s4x_memv_distortion_buffer, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_BRC_DISTORTION_G9); +} + +/* The function related with BRC */ +static VAStatus +gen9_vp9_brc_init_reset_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_brc_context *brc_context = &vme_context->brc_context; + struct gpe_media_object_parameter media_object_param; + struct i965_gpe_context *gpe_context; + int gpe_index = VP9_BRC_INIT; + int media_function = VP9_MEDIA_STATE_BRC_INIT_RESET; + struct gen9_vp9_brc_curbe_param brc_initreset_curbe; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + if (vp9_state->brc_inited) + gpe_index = VP9_BRC_RESET; + + gpe_context = &brc_context->gpe_contexts[gpe_index]; + + gen8_gpe_context_init(ctx, gpe_context); + gen9_gpe_reset_binding_table(ctx, gpe_context); + + brc_initreset_curbe.media_state_type = media_function; + brc_initreset_curbe.curr_frame = pic_param->reconstructed_frame; + brc_initreset_curbe.ppic_param = vp9_state->pic_param; + brc_initreset_curbe.pseq_param = vp9_state->seq_param; + brc_initreset_curbe.psegment_param = vp9_state->segment_param; + brc_initreset_curbe.frame_width = vp9_state->frame_width; + brc_initreset_curbe.frame_height = vp9_state->frame_height; + brc_initreset_curbe.pbrc_init_current_target_buf_full_in_bits = + &vp9_state->brc_init_current_target_buf_full_in_bits; + brc_initreset_curbe.pbrc_init_reset_buf_size_in_bits = + &vp9_state->brc_init_reset_buf_size_in_bits; + brc_initreset_curbe.pbrc_init_reset_input_bits_per_frame = + &vp9_state->brc_init_reset_input_bits_per_frame; + brc_initreset_curbe.picture_coding_type = vp9_state->picture_coding_type; + brc_initreset_curbe.initbrc = !vp9_state->brc_inited; + brc_initreset_curbe.mbbrc_enabled = 0; + brc_initreset_curbe.ref_frame_flag = vp9_state->ref_frame_flag; + brc_initreset_curbe.frame_rate = vp9_state->frame_rate; + + vme_context->pfn_set_curbe_brc(ctx, encode_state, + gpe_context, + encoder_context, + &brc_initreset_curbe); + + gen9_brc_init_reset_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context); + gen8_gpe_setup_interface_data(ctx, gpe_context); + + memset(&media_object_param, 0, sizeof(media_object_param)); + gen9_run_kernel_media_object(ctx, encoder_context, gpe_context, media_function, &media_object_param); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_brc_intra_dist_add_surfaces_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *gpe_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + + struct object_surface *obj_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + + /* sScaled4xSurface surface */ + obj_surface = encode_state->reconstructed_object; + + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + obj_surface = vp9_priv_surface->scaled_4x_surface_obj; + gen9_add_2d_gpe_surface(ctx, gpe_context, + obj_surface, + 0, 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_BRC_SRCY4X_G9 + ); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + obj_surface, + VP9_BTI_BRC_VME_COARSE_INTRA_G9); + + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + &vme_context->s4x_memv_distortion_buffer, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_BRC_DISTORTION_G9); + + return; +} + +/* The function related with BRC */ +static VAStatus +gen9_vp9_brc_intra_dist_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_brc_context *brc_context = &vme_context->brc_context; + struct i965_gpe_context *gpe_context; + int gpe_index = VP9_BRC_INTRA_DIST; + int media_function = VP9_MEDIA_STATE_ENC_I_FRAME_DIST; + struct gen9_vp9_brc_curbe_param brc_intra_dist_curbe; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_state *vp9_state; + struct gpe_media_object_walker_parameter media_object_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + gpe_context = &brc_context->gpe_contexts[gpe_index]; + + gen8_gpe_context_init(ctx, gpe_context); + gen9_gpe_reset_binding_table(ctx, gpe_context); + + brc_intra_dist_curbe.media_state_type = media_function; + brc_intra_dist_curbe.curr_frame = pic_param->reconstructed_frame; + brc_intra_dist_curbe.ppic_param = vp9_state->pic_param; + brc_intra_dist_curbe.pseq_param = vp9_state->seq_param; + brc_intra_dist_curbe.psegment_param = vp9_state->segment_param; + brc_intra_dist_curbe.frame_width = vp9_state->frame_width; + brc_intra_dist_curbe.frame_height = vp9_state->frame_height; + brc_intra_dist_curbe.pbrc_init_current_target_buf_full_in_bits = + &vp9_state->brc_init_current_target_buf_full_in_bits; + brc_intra_dist_curbe.pbrc_init_reset_buf_size_in_bits = + &vp9_state->brc_init_reset_buf_size_in_bits; + brc_intra_dist_curbe.pbrc_init_reset_input_bits_per_frame = + &vp9_state->brc_init_reset_input_bits_per_frame; + brc_intra_dist_curbe.picture_coding_type = vp9_state->picture_coding_type; + brc_intra_dist_curbe.initbrc = !vp9_state->brc_inited; + brc_intra_dist_curbe.mbbrc_enabled = 0; + brc_intra_dist_curbe.ref_frame_flag = vp9_state->ref_frame_flag; + brc_intra_dist_curbe.frame_rate = vp9_state->frame_rate; + + vme_context->pfn_set_curbe_brc(ctx, encode_state, + gpe_context, + encoder_context, + &brc_intra_dist_curbe); + + /* zero distortion buffer */ + i965_zero_gpe_resource(&vme_context->s4x_memv_distortion_buffer); + + gen9_brc_intra_dist_add_surfaces_vp9(ctx, encode_state, encoder_context, gpe_context); + gen8_gpe_setup_interface_data(ctx, gpe_context); + + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); + kernel_walker_param.resolution_x = vme_context->downscaled_width_in_mb4x; + kernel_walker_param.resolution_y = vme_context->downscaled_height_in_mb4x; + kernel_walker_param.no_dependency = 1; + + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); + + gen9_run_kernel_media_object_walker(ctx, encoder_context, + gpe_context, + media_function, + &media_object_walker_param); + + return VA_STATUS_SUCCESS; +} + +static void +intel_vp9enc_construct_picstate_batchbuf(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *gpe_resource) +{ + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + int frame_width_minus1, frame_height_minus1; + int is_lossless = 0; + int is_intra_only = 0; + unsigned int last_frame_type; + unsigned int ref_flags; + unsigned int use_prev_frame_mvs, adapt_flag; + struct gen9_surface_vp9 *vp9_surface = NULL; + struct object_surface *obj_surface = NULL; + uint32_t scale_h = 0; + uint32_t scale_w = 0; + + char *pdata; + int i, j; + unsigned int *cmd_ptr, cmd_value, tmp; + + pdata = i965_map_gpe_resource(gpe_resource); + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param || !pdata) + return; + + pic_param = vp9_state->pic_param; + frame_width_minus1 = ALIGN(pic_param->frame_width_dst, 8) - 1; + frame_height_minus1 = ALIGN(pic_param->frame_height_dst, 8) - 1; + if ((pic_param->luma_ac_qindex == 0) && + (pic_param->luma_dc_qindex_delta == 0) && + (pic_param->chroma_ac_qindex_delta == 0) && + (pic_param->chroma_dc_qindex_delta == 0)) + is_lossless = 1; + + if (pic_param->pic_flags.bits.frame_type) + is_intra_only = pic_param->pic_flags.bits.intra_only; + + last_frame_type = vp9_state->vp9_last_frame.frame_type; + + use_prev_frame_mvs = 0; + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) { + last_frame_type = 0; + ref_flags = 0; + } else { + ref_flags = ((pic_param->ref_flags.bits.ref_arf_sign_bias << 9) | + (pic_param->ref_flags.bits.ref_gf_sign_bias << 8) | + (pic_param->ref_flags.bits.ref_last_sign_bias << 7) + ); + if (!pic_param->pic_flags.bits.error_resilient_mode && + (pic_param->frame_width_dst == vp9_state->vp9_last_frame.frame_width) && + (pic_param->frame_height_dst == vp9_state->vp9_last_frame.frame_height) && + !pic_param->pic_flags.bits.intra_only && + vp9_state->vp9_last_frame.show_frame && + ((vp9_state->vp9_last_frame.frame_type == HCP_VP9_INTER_FRAME) && + !vp9_state->vp9_last_frame.intra_only) + ) + use_prev_frame_mvs = 1; + } + adapt_flag = 0; + if (!pic_param->pic_flags.bits.error_resilient_mode && + !pic_param->pic_flags.bits.frame_parallel_decoding_mode) + adapt_flag = 1; + + for (i = 0; i < 4; i++) { + uint32_t non_first_pass; + non_first_pass = 1; + if (i == 0) + non_first_pass = 0; + + cmd_ptr =(unsigned int *)(pdata + i * VP9_PIC_STATE_BUFFER_SIZE); + + *cmd_ptr++ = (HCP_VP9_PIC_STATE | (33 - 2)); + *cmd_ptr++ = (frame_height_minus1 << 16 | + frame_width_minus1); + /* dw2 */ + *cmd_ptr++ = ( 0 << 31 | /* disable segment_in */ + 0 << 30 | /* disable segment_out */ + is_lossless << 29 | /* loseless */ + (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_temporal_update) << 28 | /* temporal update */ + (pic_param->pic_flags.bits.segmentation_enabled && pic_param->pic_flags.bits.segmentation_update_map) << 27 | /* temporal update */ + (pic_param->pic_flags.bits.segmentation_enabled << 26) | + (pic_param->sharpness_level << 23) | + (pic_param->filter_level << 17) | + (pic_param->pic_flags.bits.frame_parallel_decoding_mode << 16) | + (pic_param->pic_flags.bits.error_resilient_mode << 15) | + (pic_param->pic_flags.bits.refresh_frame_context << 14) | + (last_frame_type << 13) | + (vp9_state->tx_mode == TX_MODE_SELECT) << 12 | + (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) << 11 | + (use_prev_frame_mvs) << 10 | + ref_flags | + (pic_param->pic_flags.bits.mcomp_filter_type << 4) | + (pic_param->pic_flags.bits.allow_high_precision_mv << 3) | + (is_intra_only << 2) | + (adapt_flag << 1) | + (pic_param->pic_flags.bits.frame_type) << 0); + + *cmd_ptr++ =((0 << 28) | /* VP9Profile0 */ + (0 << 24) | /* 8-bit depth */ + (0 << 22) | /* only 420 format */ + (0 << 0) | /* sse statistics */ + (pic_param->log2_tile_rows << 8) | + (pic_param->log2_tile_columns << 0)); + + /* dw4..6 */ + if (pic_param->pic_flags.bits.frame_type && + !pic_param->pic_flags.bits.intra_only) { + for (j = 0; j < 3; j++) { + obj_surface = encode_state->reference_objects[j]; + scale_w = 0; + scale_h = 0; + if (obj_surface && obj_surface->private_data) { + vp9_surface = obj_surface->private_data; + scale_w = (vp9_surface->frame_width << 14) / pic_param->frame_width_dst; + scale_h = (vp9_surface->frame_height << 14) / pic_param->frame_height_dst; + *cmd_ptr++ = (scale_w << 16 | + scale_h); + } else + *cmd_ptr++ = 0; + } + } else { + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + } + /* dw7..9 */ + for(j = 0; j < 3; j++) { + obj_surface = encode_state->reference_objects[j]; + vp9_surface = NULL; + + if (obj_surface && obj_surface->private_data) { + vp9_surface = obj_surface->private_data; + *cmd_ptr++ = (vp9_surface->frame_height - 1) << 16 | + (vp9_surface->frame_width - 1); + } else + *cmd_ptr++ = 0; + } + /* dw10 */ + *cmd_ptr++ = 0; + /* dw11 */ + *cmd_ptr++ = (1 << 1); + *cmd_ptr++ = 0; + + /* dw13 */ + *cmd_ptr++ = ((1 << 25) | /* header insertation for VP9 */ + (0 << 24) | /* tail insertation */ + (pic_param->luma_ac_qindex << 16) | + 0 /* compressed header bin count */); + + /* dw14 */ + tmp = intel_convert_sign_mag(pic_param->luma_dc_qindex_delta, 5); + cmd_value = (tmp << 16); + tmp = intel_convert_sign_mag(pic_param->chroma_dc_qindex_delta, 5); + cmd_value |= (tmp << 8); + tmp = intel_convert_sign_mag(pic_param->chroma_ac_qindex_delta, 5); + cmd_value |= tmp; + *cmd_ptr++ = cmd_value; + + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[0], 7); + cmd_value = tmp; + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[1], 7); + cmd_value |= (tmp << 8); + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[2], 7); + cmd_value |= (tmp << 16); + tmp = intel_convert_sign_mag(pic_param->ref_lf_delta[3], 7); + cmd_value |= (tmp << 24); + *cmd_ptr++ = cmd_value; + + /* dw16 */ + tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[0], 7); + cmd_value = tmp; + tmp = intel_convert_sign_mag(pic_param->mode_lf_delta[1], 7); + cmd_value |= (tmp << 8); + *cmd_ptr++ = cmd_value; + + /* dw17 */ + *cmd_ptr++ = vp9_state->frame_header.bit_offset_ref_lf_delta | + (vp9_state->frame_header.bit_offset_mode_lf_delta << 16); + *cmd_ptr++ = vp9_state->frame_header.bit_offset_qindex | + (vp9_state->frame_header.bit_offset_lf_level << 16); + + /* dw19 */ + *cmd_ptr++ = (1 << 26 | (1 << 25) | + non_first_pass << 16); + /* dw20 */ + *cmd_ptr++ = (1 << 31) | (256); + + /* dw21 */ + *cmd_ptr++ = (0 << 31) | 1; + + /* dw22-dw24. Frame_delta_qindex_range */ + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + + /* dw25-26. frame_delta_lf_range */ + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + + /* dw27. frame_delta_lf_min */ + *cmd_ptr++ = 0; + + /* dw28..30 */ + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + *cmd_ptr++ = 0; + + /* dw31 */ + *cmd_ptr++ = (0 << 30) | 1; + /* dw32 */ + *cmd_ptr++ = vp9_state->frame_header.bit_offset_first_partition_size; + + *cmd_ptr++ = 0; + *cmd_ptr++ = MI_BATCH_BUFFER_END; + } + + i965_unmap_gpe_resource(gpe_resource); +} + +static void +gen9_brc_update_add_surfaces_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *brc_gpe_context, + struct i965_gpe_context *mbenc_gpe_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + + /* 0. BRC history buffer */ + gen9_add_buffer_gpe_surface(ctx, + brc_gpe_context, + &vme_context->res_brc_history_buffer, + 0, + vme_context->res_brc_history_buffer.size, + 0, + VP9_BTI_BRC_HISTORY_G9); + + /* 1. Constant data buffer */ + gen9_add_buffer_gpe_surface(ctx, + brc_gpe_context, + &vme_context->res_brc_const_data_buffer, + 0, + vme_context->res_brc_const_data_buffer.size, + 0, + VP9_BTI_BRC_CONSTANT_DATA_G9); + + /* 2. Distortion 2D surface buffer */ + gen9_add_buffer_2d_gpe_surface(ctx, + brc_gpe_context, + &vme_context->s4x_memv_distortion_buffer, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_BRC_DISTORTION_G9); + + /* 3. pak buffer */ + gen9_add_buffer_gpe_surface(ctx, + brc_gpe_context, + &vme_context->res_brc_mmdk_pak_buffer, + 0, + vme_context->res_brc_mmdk_pak_buffer.size, + 0, + VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9); + /* 4. Mbenc curbe input buffer */ + gen9_add_dri_buffer_gpe_surface(ctx, + brc_gpe_context, + mbenc_gpe_context->dynamic_state.bo, + 0, + ALIGN(mbenc_gpe_context->curbe_size, 64), + mbenc_gpe_context->curbe_offset, + VP9_BTI_BRC_MBENC_CURBE_INPUT_G9); + /* 5. Mbenc curbe output buffer */ + gen9_add_dri_buffer_gpe_surface(ctx, + brc_gpe_context, + mbenc_gpe_context->dynamic_state.bo, + 0, + ALIGN(mbenc_gpe_context->curbe_size, 64), + mbenc_gpe_context->curbe_offset, + VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9); + + /* 6. BRC_PIC_STATE read buffer */ + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_pic_state_brc_read_buffer, + 0, + vme_context->res_pic_state_brc_read_buffer.size, + 0, + VP9_BTI_BRC_PIC_STATE_INPUT_G9); + + /* 7. BRC_PIC_STATE write buffer */ + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_pic_state_brc_write_hfw_read_buffer, + 0, + vme_context->res_pic_state_brc_write_hfw_read_buffer.size, + 0, + VP9_BTI_BRC_PIC_STATE_OUTPUT_G9); + + /* 8. SEGMENT_STATE read buffer */ + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_seg_state_brc_read_buffer, + 0, + vme_context->res_seg_state_brc_read_buffer.size, + 0, + VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9); + + /* 9. SEGMENT_STATE write buffer */ + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_seg_state_brc_write_buffer, + 0, + vme_context->res_seg_state_brc_write_buffer.size, + 0, + VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9); + + /* 10. Bitstream size buffer */ + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_brc_bitstream_size_buffer, + 0, + vme_context->res_brc_bitstream_size_buffer.size, + 0, + VP9_BTI_BRC_BITSTREAM_SIZE_G9); + + gen9_add_buffer_gpe_surface(ctx, brc_gpe_context, + &vme_context->res_brc_hfw_data_buffer, + 0, + vme_context->res_brc_hfw_data_buffer.size, + 0, + VP9_BTI_BRC_HFW_DATA_G9); + + return; +} + +static VAStatus +gen9_vp9_brc_update_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_brc_context *brc_context = &vme_context->brc_context; + struct i965_gpe_context *brc_gpe_context, *mbenc_gpe_context; + int mbenc_index, gpe_index = VP9_BRC_UPDATE; + int media_function = VP9_MEDIA_STATE_BRC_UPDATE; + int mbenc_function; + struct gen9_vp9_brc_curbe_param brc_update_curbe_param; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_state *vp9_state; + struct gen9_vp9_mbenc_curbe_param mbenc_curbe_param; + struct gpe_media_object_parameter media_object_param; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + // Setup VP9 MbEnc Curbe + if (vp9_state->picture_coding_type) { + mbenc_function = VP9_MEDIA_STATE_MBENC_P; + mbenc_index = VP9_MBENC_IDX_INTER; + } else { + mbenc_function = VP9_MEDIA_STATE_MBENC_I_32x32; + mbenc_index = VP9_MBENC_IDX_KEY_32x32; + } + + mbenc_gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_index]); + + memset(&mbenc_curbe_param, 0, sizeof(mbenc_curbe_param)); + + mbenc_curbe_param.ppic_param = vp9_state->pic_param; + mbenc_curbe_param.pseq_param = vp9_state->seq_param; + mbenc_curbe_param.psegment_param = vp9_state->segment_param; + //mbenc_curbe_param.ppRefList = &(vp9_state->pRefList[0]); + mbenc_curbe_param.last_ref_obj = vp9_state->last_ref_obj; + mbenc_curbe_param.golden_ref_obj = vp9_state->golden_ref_obj; + mbenc_curbe_param.alt_ref_obj = vp9_state->alt_ref_obj; + mbenc_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; + mbenc_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; + mbenc_curbe_param.hme_enabled = vp9_state->hme_enabled; + mbenc_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; + mbenc_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check; + mbenc_curbe_param.picture_coding_type = vp9_state->picture_coding_type; + mbenc_curbe_param.media_state_type = mbenc_function; + + vme_context->pfn_set_curbe_mbenc(ctx, encode_state, + mbenc_gpe_context, + encoder_context, + &mbenc_curbe_param); + + vp9_state->mbenc_curbe_set_in_brc_update = true; + + brc_gpe_context = &brc_context->gpe_contexts[gpe_index]; + + gen8_gpe_context_init(ctx, brc_gpe_context); + gen9_gpe_reset_binding_table(ctx, brc_gpe_context); + + memset(&brc_update_curbe_param, 0, sizeof(brc_update_curbe_param)); + + // Setup BRC Update Curbe + brc_update_curbe_param.media_state_type = media_function; + brc_update_curbe_param.curr_frame = pic_param->reconstructed_frame; + brc_update_curbe_param.ppic_param = vp9_state->pic_param; + brc_update_curbe_param.pseq_param = vp9_state->seq_param; + brc_update_curbe_param.psegment_param = vp9_state->segment_param; + brc_update_curbe_param.picture_coding_type = vp9_state->picture_coding_type; + brc_update_curbe_param.frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; + brc_update_curbe_param.frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; + brc_update_curbe_param.hme_enabled = vp9_state->hme_enabled; + brc_update_curbe_param.b_used_ref = 1; + brc_update_curbe_param.frame_number = vp9_state->frame_number; + brc_update_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; + brc_update_curbe_param.mbbrc_enabled = 0; + brc_update_curbe_param.multi_ref_qp_check = vp9_state->multi_ref_qp_check; + brc_update_curbe_param.brc_num_pak_passes = vp9_state->num_pak_passes; + + brc_update_curbe_param.pbrc_init_current_target_buf_full_in_bits = + &vp9_state->brc_init_current_target_buf_full_in_bits; + brc_update_curbe_param.pbrc_init_reset_buf_size_in_bits = + &vp9_state->brc_init_reset_buf_size_in_bits; + brc_update_curbe_param.pbrc_init_reset_input_bits_per_frame = + &vp9_state->brc_init_reset_input_bits_per_frame; + + vme_context->pfn_set_curbe_brc(ctx, encode_state, + brc_gpe_context, + encoder_context, + &brc_update_curbe_param); + + + // Check if the constant data surface is present + if (vp9_state->brc_constant_buffer_supported) + { + char *brc_const_buffer; + brc_const_buffer = i965_map_gpe_resource(&vme_context->res_brc_const_data_buffer); + + if (!brc_const_buffer) + return VA_STATUS_ERROR_OPERATION_FAILED; + + if (vp9_state->picture_coding_type) + memcpy(brc_const_buffer, vp9_brc_const_data_p_g9, + sizeof(vp9_brc_const_data_p_g9)); + else + memcpy(brc_const_buffer, vp9_brc_const_data_i_g9, + sizeof(vp9_brc_const_data_i_g9)); + + i965_unmap_gpe_resource(&vme_context->res_brc_const_data_buffer); + } + + if (pic_param->pic_flags.bits.segmentation_enabled) + { + //reallocate the vme_state->mb_segment_map_surface + /* this will be added later */ + } + + { + pic_param->filter_level = 0; + // clear the filter level value in picParams ebfore programming pic state, as this value will be determined and updated by BRC. + intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state, + encoder_context, &vme_context->res_pic_state_brc_read_buffer); + } + + gen9_brc_update_add_surfaces_vp9(ctx, encode_state, + encoder_context, + brc_gpe_context, + mbenc_gpe_context); + + gen8_gpe_setup_interface_data(ctx, brc_gpe_context); + memset(&media_object_param, 0, sizeof(media_object_param)); + gen9_run_kernel_media_object(ctx, encoder_context, + brc_gpe_context, + media_function, + &media_object_param); + return VA_STATUS_SUCCESS; +} + +static +void gen9_vp9_set_curbe_me(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_me_curbe_param *param) +{ + vp9_me_curbe_data *me_cmd; + int enc_media_state; + int me_mode; + unsigned int width, height; + uint32_t l0_ref_frames; + uint32_t scale_factor; + + if (param->b16xme_enabled) { + if (param->use_16x_me) + me_mode = VP9_ENC_ME16X_BEFORE_ME4X; + else + me_mode = VP9_ENC_ME4X_AFTER_ME16X; + } else { + me_mode = VP9_ENC_ME4X_ONLY; + } + + if (me_mode == VP9_ENC_ME16X_BEFORE_ME4X) + scale_factor = 16; + else + scale_factor = 4; + + if (param->use_16x_me) + enc_media_state = VP9_MEDIA_STATE_16X_ME; + else + enc_media_state = VP9_MEDIA_STATE_4X_ME; + + me_cmd = gen8p_gpe_context_map_curbe(gpe_context); + + if (!me_cmd) + return; + + memset(me_cmd, 0, sizeof(vp9_me_curbe_data)); + + me_cmd->dw1.max_num_mvs = 0x10; + me_cmd->dw1.bi_weight = 0x00; + + me_cmd->dw2.max_num_su = 0x39; + me_cmd->dw2.max_len_sp = 0x39; + + me_cmd->dw3.sub_mb_part_mask = 0x77; + me_cmd->dw3.inter_sad = 0x00; + me_cmd->dw3.intra_sad = 0x00; + me_cmd->dw3.bme_disable_fbr = 0x01; + me_cmd->dw3.sub_pel_mode = 0x03; + + width = param->frame_width / scale_factor; + height = param->frame_height / scale_factor; + + me_cmd->dw4.picture_width = ALIGN(width, 16) / 16; + me_cmd->dw4.picture_height_minus1 = ALIGN(height, 16) / 16 - 1; + + me_cmd->dw5.ref_width = 0x30; + me_cmd->dw5.ref_height = 0x28; + + if (enc_media_state == VP9_MEDIA_STATE_4X_ME) + me_cmd->dw6.write_distortions = 0x01; + + me_cmd->dw6.use_mv_from_prev_step = me_mode == VP9_ENC_ME4X_AFTER_ME16X ? 1 : 0; + me_cmd->dw6.super_combine_dist = 0x5; + me_cmd->dw6.max_vmvr = 0x7fc; + + l0_ref_frames = (param->ref_frame_flag & 0x01) + + !!(param->ref_frame_flag & 0x02) + + !!(param->ref_frame_flag & 0x04); + me_cmd->dw13.num_ref_idx_l0_minus1 = (l0_ref_frames > 0) ? l0_ref_frames - 1 : 0; + me_cmd->dw13.num_ref_idx_l1_minus1 = 0; + + me_cmd->dw14.l0_ref_pic_polarity_bits = 0; + me_cmd->dw14.l1_ref_pic_polarity_bits = 0; + + me_cmd->dw15.mv_shift_factor = 0x02; + + { + memcpy((void *)((char *)me_cmd + 64), + vp9_diamond_ime_search_path_delta, + sizeof(vp9_diamond_ime_search_path_delta)); + } + + + me_cmd->dw32._4x_memv_output_data_surf_index = VP9_BTI_ME_MV_DATA_SURFACE; + me_cmd->dw33._16x_32x_memv_input_data_surf_index = VP9_BTI_16XME_MV_DATA_SURFACE; + me_cmd->dw34._4x_me_output_dist_surf_index = VP9_BTI_ME_DISTORTION_SURFACE; + me_cmd->dw35._4x_me_output_brc_dist_surf_index = VP9_BTI_ME_BRC_DISTORTION_SURFACE; + me_cmd->dw36.vme_fwd_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L0; + me_cmd->dw37.vme_bdw_inter_pred_surf_index = VP9_BTI_ME_CURR_PIC_L1; + + gen8p_gpe_context_unmap_curbe(gpe_context); +} + +static void +gen9_vp9_send_me_surface(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_me_surface_param *param) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct object_surface *obj_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + struct object_surface *input_surface; + struct i965_gpe_resource *gpe_resource; + int ref_bti; + + obj_surface = SURFACE(param->curr_pic); + + if (!obj_surface || !obj_surface->private_data) + return; + + vp9_priv_surface = obj_surface->private_data; + if (param->use_16x_me) + { + gpe_resource = param->pres_16x_memv_data_buffer; + } + else + { + gpe_resource = param->pres_4x_memv_data_buffer; + } + + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + gpe_resource, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_ME_MV_DATA_SURFACE); + + if (param->b16xme_enabled) { + gpe_resource = param->pres_16x_memv_data_buffer; + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + gpe_resource, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_16XME_MV_DATA_SURFACE); + } + + if (!param->use_16x_me) { + gpe_resource = param->pres_me_brc_distortion_buffer; + + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + gpe_resource, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_ME_BRC_DISTORTION_SURFACE); + + gpe_resource = param->pres_me_distortion_buffer; + + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + gpe_resource, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_ME_DISTORTION_SURFACE); + } + + if (param->use_16x_me) + input_surface = vp9_priv_surface->scaled_16x_surface_obj; + else + input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + VP9_BTI_ME_CURR_PIC_L0); + + ref_bti = VP9_BTI_ME_CURR_PIC_L0 + 1; + + + if (param->last_ref_pic) { + obj_surface = param->last_ref_pic; + vp9_priv_surface = obj_surface->private_data; + + if (param->use_16x_me) + input_surface = vp9_priv_surface->scaled_16x_surface_obj; + else + input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + if (param->dys_enabled && + ((vp9_priv_surface->frame_width != param->frame_width) || + (vp9_priv_surface->frame_height != param->frame_height))) { + if (param->use_16x_me) + input_surface = vp9_priv_surface->dys_16x_surface_obj; + else + input_surface = vp9_priv_surface->dys_4x_surface_obj; + } + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti); + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti + 1); + ref_bti += 2; + } + + if (param->golden_ref_pic) { + obj_surface = param->golden_ref_pic; + vp9_priv_surface = obj_surface->private_data; + + if (param->use_16x_me) + input_surface = vp9_priv_surface->scaled_16x_surface_obj; + else + input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + if (param->dys_enabled && + ((vp9_priv_surface->frame_width != param->frame_width) || + (vp9_priv_surface->frame_height != param->frame_height))) { + if (param->use_16x_me) + input_surface = vp9_priv_surface->dys_16x_surface_obj; + else + input_surface = vp9_priv_surface->dys_4x_surface_obj; + } + + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti); + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti + 1); + ref_bti += 2; + } + + if (param->alt_ref_pic) { + obj_surface = param->alt_ref_pic; + vp9_priv_surface = obj_surface->private_data; + + if (param->use_16x_me) + input_surface = vp9_priv_surface->scaled_16x_surface_obj; + else + input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + if (param->dys_enabled && + ((vp9_priv_surface->frame_width != param->frame_width) || + (vp9_priv_surface->frame_height != param->frame_height))) { + if (param->use_16x_me) + input_surface = vp9_priv_surface->dys_16x_surface_obj; + else + input_surface = vp9_priv_surface->dys_4x_surface_obj; + } + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti); + gen9_add_adv_gpe_surface(ctx, gpe_context, + input_surface, + ref_bti + 1); + ref_bti += 2; + } + + return; +} + +static +void gen9_me_add_surfaces_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct i965_gpe_context *gpe_context, + int use_16x_me) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct gen9_vp9_me_surface_param me_surface_param; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + /* sScaled4xSurface surface */ + memset(&me_surface_param, 0, sizeof(me_surface_param)); + me_surface_param.last_ref_pic = vp9_state->last_ref_obj; + me_surface_param.golden_ref_pic = vp9_state->golden_ref_obj; + me_surface_param.alt_ref_pic = vp9_state->alt_ref_obj; + me_surface_param.curr_pic = vp9_state->curr_frame; + me_surface_param.pres_4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer; + me_surface_param.pres_16x_memv_data_buffer = &vme_context->s16x_memv_data_buffer; + me_surface_param.pres_me_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; + me_surface_param.pres_me_brc_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; + + if (use_16x_me) { + me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb; + me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb; + } else { + me_surface_param.downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb; + me_surface_param.downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb; + } + me_surface_param.frame_width = vp9_state->frame_width; + me_surface_param.frame_height = vp9_state->frame_height; + + me_surface_param.use_16x_me = use_16x_me; + me_surface_param.b16xme_enabled = vp9_state->b16xme_enabled; + me_surface_param.dys_enabled = vp9_state->dys_in_use; + + vme_context->pfn_send_me_surface(ctx, encode_state, + gpe_context, + encoder_context, + &me_surface_param); + return; +} + +static VAStatus +gen9_vp9_me_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int use_16x_me) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct i965_gpe_context *gpe_context; + int media_function; + struct gen9_vp9_me_curbe_param me_curbe_param; + struct gen9_vp9_state *vp9_state; + struct gpe_media_object_walker_parameter media_object_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + if (use_16x_me) + media_function = VP9_MEDIA_STATE_16X_ME; + else + media_function = VP9_MEDIA_STATE_4X_ME; + + gpe_context = &(vme_context->me_context.gpe_context); + + gen8_gpe_context_init(ctx, gpe_context); + gen9_gpe_reset_binding_table(ctx, gpe_context); + + memset(&me_curbe_param, 0, sizeof(me_curbe_param)); + me_curbe_param.ppic_param = vp9_state->pic_param; + me_curbe_param.pseq_param = vp9_state->seq_param; + me_curbe_param.frame_width = vp9_state->frame_width; + me_curbe_param.frame_height = vp9_state->frame_height; + me_curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; + me_curbe_param.use_16x_me = use_16x_me; + me_curbe_param.b16xme_enabled = vp9_state->b16xme_enabled; + vme_context->pfn_set_curbe_me(ctx, encode_state, + gpe_context, + encoder_context, + &me_curbe_param); + + gen9_me_add_surfaces_vp9(ctx, encode_state, + encoder_context, + gpe_context, + use_16x_me); + + gen8_gpe_setup_interface_data(ctx, gpe_context); + + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); + if (use_16x_me) { + kernel_walker_param.resolution_x = vp9_state->downscaled_width_16x_in_mb; + kernel_walker_param.resolution_y = vp9_state->downscaled_height_16x_in_mb; + } else { + kernel_walker_param.resolution_x = vp9_state->downscaled_width_4x_in_mb; + kernel_walker_param.resolution_y = vp9_state->downscaled_height_4x_in_mb; + } + kernel_walker_param.no_dependency = 1; + + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); + + gen9_run_kernel_media_object_walker(ctx, encoder_context, + gpe_context, + media_function, + &media_object_walker_param); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vp9_set_curbe_scaling_cm(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_scaling_curbe_param *curbe_param) +{ + vp9_scaling4x_curbe_data_cm *curbe_cmd; + + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); + + if (!curbe_cmd) + return; + + memset(curbe_cmd, 0, sizeof(vp9_scaling4x_curbe_data_cm)); + + curbe_cmd->dw0.input_picture_width = curbe_param->input_picture_width; + curbe_cmd->dw0.input_picture_height = curbe_param->input_picture_height; + + curbe_cmd->dw1.input_y_bti = VP9_BTI_SCALING_FRAME_SRC_Y; + curbe_cmd->dw2.output_y_bti = VP9_BTI_SCALING_FRAME_DST_Y; + + + curbe_cmd->dw6.enable_mb_variance_output = 0; + curbe_cmd->dw6.enable_mb_pixel_average_output = 0; + curbe_cmd->dw6.enable_blk8x8_stat_output = 0; + + if (curbe_param->mb_variance_output_enabled || + curbe_param->mb_pixel_average_output_enabled) + { + curbe_cmd->dw10.mbv_proc_stat_bti = VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM; + } + + gen8p_gpe_context_unmap_curbe(gpe_context); + return; +} + +static void +gen9_vp9_send_scaling_surface(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_scaling_surface_param *scaling_surface_param) +{ + vp9_bti_scaling_offset *scaling_bti; + unsigned int surface_format; + + scaling_bti = scaling_surface_param->p_scaling_bti; + + if (scaling_surface_param->scaling_out_use_32unorm_surf_fmt) + surface_format = I965_SURFACEFORMAT_R32_UNORM; + else if (scaling_surface_param->scaling_out_use_16unorm_surf_fmt) + surface_format = I965_SURFACEFORMAT_R16_UNORM; + else + surface_format = I965_SURFACEFORMAT_R8_UNORM; + + gen9_add_2d_gpe_surface(ctx, gpe_context, + scaling_surface_param->input_surface, + 0, 1, surface_format, + scaling_bti->scaling_frame_src_y); + + gen9_add_2d_gpe_surface(ctx, gpe_context, + scaling_surface_param->output_surface, + 0, 1, surface_format, + scaling_bti->scaling_frame_dst_y); + + + return; +} + +static VAStatus +gen9_vp9_scaling_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int use_16x_scaling) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct i965_gpe_context *gpe_context; + int media_function; + struct gen9_vp9_scaling_curbe_param scaling_curbe_param; + struct gen9_vp9_scaling_surface_param scaling_surface_param; + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + struct gpe_media_object_walker_parameter media_object_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; + struct object_surface *obj_surface; + struct object_surface *input_surface, *output_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + unsigned int downscaled_width_in_mb, downscaled_height_in_mb; + unsigned int input_frame_width, input_frame_height; + unsigned int output_frame_width, output_frame_height; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + if (use_16x_scaling) + media_function = VP9_MEDIA_STATE_16X_SCALING; + else + media_function = VP9_MEDIA_STATE_4X_SCALING; + + gpe_context = &(vme_context->scaling_context.gpe_contexts[0]); + + gen8_gpe_context_init(ctx, gpe_context); + gen9_gpe_reset_binding_table(ctx, gpe_context); + + obj_surface = encode_state->reconstructed_object; + vp9_priv_surface = obj_surface->private_data; + + if (use_16x_scaling) + { + downscaled_width_in_mb = vp9_state->downscaled_width_16x_in_mb; + downscaled_height_in_mb = vp9_state->downscaled_height_16x_in_mb; + + input_surface = vp9_priv_surface->scaled_4x_surface_obj; + input_frame_width = vp9_state->frame_width_4x; + input_frame_height = vp9_state->frame_height_4x; + + output_surface = vp9_priv_surface->scaled_16x_surface_obj; + output_frame_width = vp9_state->frame_width_16x; + output_frame_height = vp9_state->frame_height_16x; + } else { + downscaled_width_in_mb = vp9_state->downscaled_width_4x_in_mb; + downscaled_height_in_mb = vp9_state->downscaled_height_4x_in_mb; + + if (vp9_state->dys_in_use && + ((pic_param->frame_width_src != pic_param->frame_width_dst) || + (pic_param->frame_height_src != pic_param->frame_height_dst))) + input_surface = vp9_priv_surface->dys_surface_obj; + else + input_surface = encode_state->input_yuv_object; + + input_frame_width = vp9_state->frame_width; + input_frame_height = vp9_state->frame_height; + + output_surface = vp9_priv_surface->scaled_4x_surface_obj; + output_frame_width = vp9_state->frame_width_4x; + output_frame_height = vp9_state->frame_height_4x; + } + + memset(&scaling_curbe_param, 0, sizeof(scaling_curbe_param)); + + scaling_curbe_param.input_picture_width = input_frame_width; + scaling_curbe_param.input_picture_height = input_frame_height; + + scaling_curbe_param.use_16x_scaling = use_16x_scaling; + scaling_curbe_param.use_32x_scaling = 0; + + if (use_16x_scaling) + scaling_curbe_param.mb_variance_output_enabled = 0; + else + scaling_curbe_param.mb_variance_output_enabled = vp9_state->adaptive_transform_decision_enabled; + + scaling_curbe_param.blk8x8_stat_enabled = 0; + + vme_context->pfn_set_curbe_scaling(ctx, encode_state, + gpe_context, + encoder_context, + &scaling_curbe_param); + + memset(&scaling_surface_param, 0, sizeof(scaling_surface_param)); + scaling_surface_param.p_scaling_bti = (void *)(&vme_context->scaling_context.scaling_4x_bti); + scaling_surface_param.input_surface = input_surface; + scaling_surface_param.input_frame_width = input_frame_width; + scaling_surface_param.input_frame_height = input_frame_height; + + scaling_surface_param.output_surface = output_surface; + scaling_surface_param.output_frame_width = output_frame_width; + scaling_surface_param.output_frame_height = output_frame_height; + scaling_surface_param.scaling_out_use_16unorm_surf_fmt = 0; + scaling_surface_param.scaling_out_use_32unorm_surf_fmt = 1; + + vme_context->pfn_send_scaling_surface(ctx, encode_state, + gpe_context, + encoder_context, + &scaling_surface_param); + + gen8_gpe_setup_interface_data(ctx, gpe_context); + + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); + /* the scaling is based on 8x8 blk level */ + kernel_walker_param.resolution_x = downscaled_width_in_mb * 2; + kernel_walker_param.resolution_y = downscaled_height_in_mb * 2; + kernel_walker_param.no_dependency = 1; + + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); + + gen9_run_kernel_media_object_walker(ctx, encoder_context, + gpe_context, + media_function, + &media_object_walker_param); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vp9_dys_set_sampler_state(struct i965_gpe_context *gpe_context) +{ + struct gen9_sampler_8x8_avs *sampler_cmd; + + if (!gpe_context) + return; + + dri_bo_map(gpe_context->dynamic_state.bo, 1); + + if (!gpe_context->dynamic_state.bo->virtual) + return; + + sampler_cmd = (struct gen9_sampler_8x8_avs *) + (gpe_context->dynamic_state.bo->virtual + gpe_context->sampler_offset); + + memset(sampler_cmd, 0, sizeof(struct gen9_sampler_8x8_avs)); + + sampler_cmd->dw0.r3c_coefficient = 15; + sampler_cmd->dw0.r3x_coefficient = 6; + sampler_cmd->dw0.strong_edge_threshold = 8; + sampler_cmd->dw0.weak_edge_threshold = 1; + sampler_cmd->dw0.gain_factor = 32; + + sampler_cmd->dw2.r5c_coefficient = 3; + sampler_cmd->dw2.r5cx_coefficient = 8; + sampler_cmd->dw2.r5x_coefficient = 9; + sampler_cmd->dw2.strong_edge_weight = 6; + sampler_cmd->dw2.regular_weight = 3; + sampler_cmd->dw2.non_edge_weight = 2; + sampler_cmd->dw2.global_noise_estimation = 255; + + sampler_cmd->dw3.enable_8tap_adaptive_filter = 0; + sampler_cmd->dw3.cos_alpha = 79; + sampler_cmd->dw3.sin_alpha = 101; + + sampler_cmd->dw5.diamond_du = 0; + sampler_cmd->dw5.hs_margin = 3; + sampler_cmd->dw5.diamond_alpha = 100; + + sampler_cmd->dw7.inv_margin_vyl = 3300; + + sampler_cmd->dw8.inv_margin_vyu = 1600; + + sampler_cmd->dw10.y_slope2 = 24; + sampler_cmd->dw10.s0l = 1792; + + sampler_cmd->dw12.y_slope1 = 24; + + sampler_cmd->dw14.s0u = 256; + + sampler_cmd->dw15.s2u = 1792; + sampler_cmd->dw15.s1u = 0; + + memcpy(sampler_cmd->coefficients, + &gen9_vp9_avs_coeffs[0], + 17 * sizeof(struct gen8_sampler_8x8_avs_coefficients)); + + sampler_cmd->dw152.default_sharpness_level = 255; + sampler_cmd->dw152.max_derivative_4_pixels = 7; + sampler_cmd->dw152.max_derivative_8_pixels = 20; + sampler_cmd->dw152.transition_area_with_4_pixels = 4; + sampler_cmd->dw152.transition_area_with_8_pixels = 5; + + sampler_cmd->dw153.bypass_x_adaptive_filtering = 1; + sampler_cmd->dw153.bypass_y_adaptive_filtering = 1; + sampler_cmd->dw153.adaptive_filter_for_all_channel = 0; + + memcpy(sampler_cmd->extra_coefficients, + &gen9_vp9_avs_coeffs[17 * 8], + 15 * sizeof(struct gen8_sampler_8x8_avs_coefficients)); + + dri_bo_unmap(gpe_context->dynamic_state.bo); +} + +static void +gen9_vp9_set_curbe_dys(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_dys_curbe_param *curbe_param) +{ + vp9_dys_curbe_data *curbe_cmd; + + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); + + if (!curbe_cmd) + return; + + memset(curbe_cmd, 0, sizeof(vp9_dys_curbe_data)); + + curbe_cmd->dw0.input_frame_width = curbe_param->input_width; + curbe_cmd->dw0.input_frame_height = curbe_param->input_height; + + curbe_cmd->dw1.output_frame_width = curbe_param->output_width; + curbe_cmd->dw1.output_frame_height = curbe_param->output_height; + + curbe_cmd->dw2.delta_u = 1.0f / curbe_param->output_width; + curbe_cmd->dw3.delta_v = 1.0f / curbe_param->output_height; + + curbe_cmd->dw16.input_frame_nv12_bti = VP9_BTI_DYS_INPUT_NV12; + curbe_cmd->dw17.output_frame_y_bti = VP9_BTI_DYS_OUTPUT_Y; + curbe_cmd->dw18.avs_sample_idx = 0; + + gen8p_gpe_context_unmap_curbe(gpe_context); +} + +static void +gen9_vp9_send_dys_surface(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_dys_surface_param *surface_param) +{ + + if (surface_param->input_frame) + gen9_add_adv_gpe_surface(ctx, + gpe_context, + surface_param->input_frame, + VP9_BTI_DYS_INPUT_NV12); + + if (surface_param->output_frame) { + gen9_add_2d_gpe_surface(ctx, + gpe_context, + surface_param->output_frame, + 0, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_DYS_OUTPUT_Y); + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + surface_param->output_frame, + 1, + 1, + I965_SURFACEFORMAT_R16_UINT, + VP9_BTI_DYS_OUTPUT_UV); + } + + return; +} + +static VAStatus +gen9_vp9_dys_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + gen9_vp9_dys_kernel_param *dys_kernel_param) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct i965_gpe_context *gpe_context; + int media_function; + struct gen9_vp9_dys_curbe_param curbe_param; + struct gen9_vp9_dys_surface_param surface_param; + struct gpe_media_object_walker_parameter media_object_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; + unsigned int resolution_x, resolution_y; + + media_function = VP9_MEDIA_STATE_DYS; + gpe_context = &vme_context->dys_context.gpe_context; + + //gen8_gpe_context_init(ctx, gpe_context); + gen9_gpe_reset_binding_table(ctx, gpe_context); + + /* sampler state is configured only when initializing the GPE context */ + + memset(&curbe_param, 0, sizeof(curbe_param)); + curbe_param.input_width = dys_kernel_param->input_width; + curbe_param.input_height = dys_kernel_param->input_height; + curbe_param.output_width = dys_kernel_param->output_width; + curbe_param.output_height = dys_kernel_param->output_height; + vme_context->pfn_set_curbe_dys(ctx, encode_state, + gpe_context, + encoder_context, + &curbe_param); + + // Add surface states + memset(&surface_param, 0, sizeof(surface_param)); + surface_param.input_frame = dys_kernel_param->input_surface; + surface_param.output_frame = dys_kernel_param->output_surface; + surface_param.vert_line_stride = 0; + surface_param.vert_line_stride_offset = 0; + + vme_context->pfn_send_dys_surface(ctx, + encode_state, + gpe_context, + encoder_context, + &surface_param); + + resolution_x = ALIGN(dys_kernel_param->output_width, 16) / 16; + resolution_y = ALIGN(dys_kernel_param->output_height, 16) / 16; + + gen8_gpe_setup_interface_data(ctx, gpe_context); + + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); + kernel_walker_param.resolution_x = resolution_x; + kernel_walker_param.resolution_y = resolution_y; + kernel_walker_param.no_dependency = 1; + + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); + + gen9_run_kernel_media_object_walker(ctx, encoder_context, + gpe_context, + media_function, + &media_object_walker_param); + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vp9_run_dys_refframes(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + gen9_vp9_dys_kernel_param dys_kernel_param; + struct object_surface *obj_surface; + struct object_surface *input_surface, *output_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + if ((pic_param->frame_width_src != pic_param->frame_width_dst) || + (pic_param->frame_height_src != pic_param->frame_height_dst)) { + input_surface = encode_state->input_yuv_object; + obj_surface = encode_state->reconstructed_object; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + output_surface = vp9_priv_surface->dys_surface_obj; + + memset(&dys_kernel_param, 0, sizeof(dys_kernel_param)); + dys_kernel_param.input_width = pic_param->frame_width_src; + dys_kernel_param.input_height = pic_param->frame_height_src; + dys_kernel_param.input_surface = input_surface; + dys_kernel_param.output_width = pic_param->frame_width_dst; + dys_kernel_param.output_height = pic_param->frame_height_dst; + dys_kernel_param.output_surface = output_surface; + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + } + + if ((vp9_state->dys_ref_frame_flag & VP9_LAST_REF) && + vp9_state->last_ref_obj) { + obj_surface = vp9_state->last_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + input_surface = obj_surface; + output_surface = vp9_priv_surface->dys_surface_obj; + + dys_kernel_param.input_width = vp9_priv_surface->frame_width; + dys_kernel_param.input_height = vp9_priv_surface->frame_height; + dys_kernel_param.input_surface = input_surface; + + dys_kernel_param.output_width = pic_param->frame_width_dst; + dys_kernel_param.output_height = pic_param->frame_height_dst; + dys_kernel_param.output_surface = output_surface; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + if (vp9_state->hme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_4x; + dys_kernel_param.output_height = vp9_state->frame_height_4x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + /* Does it really need to do the 16x HME if the + * resolution is different? + * Maybe it should be restricted + */ + if (vp9_state->b16xme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_16x; + dys_kernel_param.output_height = vp9_state->frame_height_16x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + } + } + } + + if ((vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) && + vp9_state->golden_ref_obj) { + obj_surface = vp9_state->golden_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + input_surface = obj_surface; + output_surface = vp9_priv_surface->dys_surface_obj; + + dys_kernel_param.input_width = vp9_priv_surface->frame_width; + dys_kernel_param.input_height = vp9_priv_surface->frame_height; + dys_kernel_param.input_surface = input_surface; + + dys_kernel_param.output_width = pic_param->frame_width_dst; + dys_kernel_param.output_height = pic_param->frame_height_dst; + dys_kernel_param.output_surface = output_surface; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + if (vp9_state->hme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_4x; + dys_kernel_param.output_height = vp9_state->frame_height_4x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + /* Does it really need to do the 16x HME if the + * resolution is different? + * Maybe it should be restricted + */ + if (vp9_state->b16xme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_16x; + dys_kernel_param.output_height = vp9_state->frame_height_16x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + } + } + } + + if ((vp9_state->dys_ref_frame_flag & VP9_ALT_REF) && + vp9_state->alt_ref_obj) { + obj_surface = vp9_state->alt_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + input_surface = obj_surface; + output_surface = vp9_priv_surface->dys_surface_obj; + + dys_kernel_param.input_width = vp9_priv_surface->frame_width; + dys_kernel_param.input_height = vp9_priv_surface->frame_height; + dys_kernel_param.input_surface = input_surface; + + dys_kernel_param.output_width = pic_param->frame_width_dst; + dys_kernel_param.output_height = pic_param->frame_height_dst; + dys_kernel_param.output_surface = output_surface; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + if (vp9_state->hme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16); + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_4x; + dys_kernel_param.output_height = vp9_state->frame_height_4x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_4x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + + /* Does it really need to do the 16x HME if the + * resolution is different? + * Maybe it should be restricted + */ + if (vp9_state->b16xme_enabled) { + dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 16), 16); + dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 16), 16); + dys_kernel_param.input_surface = vp9_priv_surface->scaled_16x_surface_obj; + + dys_kernel_param.output_width = vp9_state->frame_width_16x; + dys_kernel_param.output_height = vp9_state->frame_height_16x; + dys_kernel_param.output_surface = vp9_priv_surface->dys_16x_surface_obj; + + gen9_vp9_dys_kernel(ctx, encode_state, + encoder_context, + &dys_kernel_param); + } + } + } + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vp9_set_curbe_mbenc(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_mbenc_curbe_param *curbe_param) +{ + struct gen9_vp9_state *vp9_state; + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param; + vp9_mbenc_curbe_data *curbe_cmd; + VAEncPictureParameterBufferVP9 *pic_param; + int i, segment_count; + int seg_qindex; + struct object_surface *obj_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return; + + pic_param = curbe_param->ppic_param; + seg_param = curbe_param->psegment_param; + + if (!seg_param) { + memset(&tmp_seg_param, 0, sizeof(tmp_seg_param)); + seg_param = &tmp_seg_param; + } + + curbe_cmd = gen8p_gpe_context_map_curbe(gpe_context); + + if (!curbe_cmd) + return; + + memset(curbe_cmd, 0, sizeof(vp9_mbenc_curbe_data)); + + if (vp9_state->dys_in_use) + { + curbe_cmd->dw0.frame_width = pic_param->frame_width_dst; + curbe_cmd->dw0.frame_height = pic_param->frame_height_dst; + } + else + { + curbe_cmd->dw0.frame_width = pic_param->frame_width_src; + curbe_cmd->dw0.frame_height = pic_param->frame_height_src; + } + + curbe_cmd->dw1.frame_type = curbe_param->picture_coding_type; + + curbe_cmd->dw1.segmentation_enable = pic_param->pic_flags.bits.segmentation_enabled; + if (pic_param->pic_flags.bits.segmentation_enabled) + segment_count = 8; + else + segment_count = 1; + + curbe_cmd->dw1.ref_frame_flags = curbe_param->ref_frame_flag; + + //right now set them to normal settings + if (curbe_param->picture_coding_type) + { + switch (vp9_state->target_usage) + { + case INTEL_ENC_VP9_TU_QUALITY: + curbe_cmd->dw1.min_16for32_check = 0x00; + curbe_cmd->dw2.multi_pred = 0x02; + curbe_cmd->dw2.len_sp = 0x39; + curbe_cmd->dw2.search_x = 0x30; + curbe_cmd->dw2.search_y = 0x28; + curbe_cmd->dw3.min_ref_for32_check = 0x01; + curbe_cmd->dw4.skip16_threshold = 0x000A; + curbe_cmd->dw4.disable_mr_threshold = 0x000C; + + memcpy(&curbe_cmd->dw16, + vp9_diamond_ime_search_path_delta, + 14 * sizeof(unsigned int)); + break; + case INTEL_ENC_VP9_TU_PERFORMANCE: + curbe_cmd->dw1.min_16for32_check = 0x02; + curbe_cmd->dw2.multi_pred = 0x00; + curbe_cmd->dw2.len_sp = 0x10; + curbe_cmd->dw2.search_x = 0x20; + curbe_cmd->dw2.search_y = 0x20; + curbe_cmd->dw3.min_ref_for32_check = 0x03; + curbe_cmd->dw4.skip16_threshold = 0x0014; + curbe_cmd->dw4.disable_mr_threshold = 0x0016; + + memcpy(&curbe_cmd->dw16, + vp9_fullspiral_ime_search_path_delta, + 14 * sizeof(unsigned int)); + + break; + default: // normal settings + curbe_cmd->dw1.min_16for32_check = 0x01; + curbe_cmd->dw2.multi_pred = 0x00; + curbe_cmd->dw2.len_sp = 0x19; + curbe_cmd->dw2.search_x = 0x30; + curbe_cmd->dw2.search_y = 0x28; + curbe_cmd->dw3.min_ref_for32_check = 0x02; + curbe_cmd->dw4.skip16_threshold = 0x000F; + curbe_cmd->dw4.disable_mr_threshold = 0x0011; + + memcpy(&curbe_cmd->dw16, + vp9_diamond_ime_search_path_delta, + 14 * sizeof(unsigned int)); + break; + } + + curbe_cmd->dw3.hme_enabled = curbe_param->hme_enabled; + curbe_cmd->dw3.multi_ref_qp_check = curbe_param->multi_ref_qp_check; + // co-located predictor must be disabled when dynamic scaling is enabled + curbe_cmd->dw3.disable_temp_pred = vp9_state->dys_in_use; + } + + curbe_cmd->dw5.inter_round = 0; + curbe_cmd->dw5.intra_round = 4; + curbe_cmd->dw5.frame_qpindex = pic_param->luma_ac_qindex; + + for (i = 0; i < segment_count; i++) + { + seg_qindex = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta + + seg_param->seg_data[i].segment_qindex_delta; + + seg_qindex = CLAMP(0, 255, seg_qindex); + + if (curbe_param->picture_coding_type) + memcpy(&curbe_cmd->segments[i], + &intel_vp9_costlut_p[seg_qindex * 16], + 16 * sizeof(unsigned int)); + else + memcpy(&curbe_cmd->segments[i], + &intel_vp9_costlut_key[seg_qindex * 16], + 16 * sizeof(unsigned int)); + } + + if (curbe_param->picture_coding_type) + { + if (curbe_cmd->dw3.multi_ref_qp_check) + { + if (curbe_param->ref_frame_flag & 0x01) + { + obj_surface = curbe_param->last_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + curbe_cmd->dw8.last_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; + } + + if (curbe_param->ref_frame_flag & 0x02) + { + obj_surface = curbe_param->golden_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + curbe_cmd->dw8.golden_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; + } + + if (curbe_param->ref_frame_flag & 0x04) + { + obj_surface = curbe_param->alt_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + curbe_cmd->dw9.alt_ref_qp = vp9_quant_dc[vp9_priv_surface->qp_value]; + } + } + } + curbe_cmd->dw160.enc_curr_y_surf_bti = VP9_BTI_MBENC_CURR_Y_G9; + curbe_cmd->dw162.enc_curr_nv12_surf_bti = VP9_BTI_MBENC_CURR_NV12_G9; + curbe_cmd->dw166.segmentation_map_bti = VP9_BTI_MBENC_SEGMENTATION_MAP_G9; + curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9; + curbe_cmd->dw167.tx_curbe_bti = VP9_BTI_MBENC_TX_CURBE_G9; + curbe_cmd->dw168.hme_mvdata_bti = VP9_BTI_MBENC_HME_MV_DATA_G9; + curbe_cmd->dw169.hme_distortion_bti = VP9_BTI_MBENC_HME_DISTORTION_G9; + curbe_cmd->dw171.mode_decision_prev_bti = VP9_BTI_MBENC_MODE_DECISION_PREV_G9; + curbe_cmd->dw172.mode_decision_bti = VP9_BTI_MBENC_MODE_DECISION_G9; + curbe_cmd->dw173.output_16x16_inter_modes_bti = VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9; + curbe_cmd->dw174.cu_record_bti = VP9_BTI_MBENC_CU_RECORDS_G9; + curbe_cmd->dw175.pak_data_bti = VP9_BTI_MBENC_PAK_DATA_G9; + + gen8p_gpe_context_unmap_curbe(gpe_context); + return; +} + +static void +gen9_vp9_send_mbenc_surface(VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_mbenc_surface_param *mbenc_param) +{ + struct gen9_vp9_state *vp9_state; + unsigned int res_size; + unsigned int frame_width_in_sb, frame_height_in_sb; + struct object_surface *obj_surface, *tmp_input; + struct gen9_surface_vp9 *vp9_priv_surface; + int media_function; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return; + + frame_width_in_sb = ALIGN(mbenc_param->frame_width, 64) / 64; + frame_height_in_sb = ALIGN(mbenc_param->frame_height, 64) / 64; + media_function = mbenc_param->media_state_type; + + switch (media_function) + { + case VP9_MEDIA_STATE_MBENC_I_32x32: + { + obj_surface = mbenc_param->curr_frame_obj; + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 0, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_CURR_Y_G9); + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 1, + 1, + I965_SURFACEFORMAT_R16_UINT, + VP9_BTI_MBENC_CURR_UV_G9); + + + if (mbenc_param->segmentation_enabled) + { + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_segmentation_map, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); + + } + + res_size = 16 * mbenc_param->frame_width_in_mb * + mbenc_param->frame_height_in_mb * sizeof(unsigned int); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mode_decision, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_MODE_DECISION_G9); + + break; + } + case VP9_MEDIA_STATE_MBENC_I_16x16: + { + obj_surface = mbenc_param->curr_frame_obj; + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 0, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_CURR_Y_G9); + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 1, + 1, + I965_SURFACEFORMAT_R16_UINT, + VP9_BTI_MBENC_CURR_UV_G9); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + obj_surface, + VP9_BTI_MBENC_CURR_NV12_G9); + + if (mbenc_param->segmentation_enabled) + { + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_segmentation_map, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); + + } + + res_size = 16 * mbenc_param->frame_width_in_mb * + mbenc_param->frame_height_in_mb * sizeof(unsigned int); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mode_decision, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_MODE_DECISION_G9); + + res_size = 160; + + gen9_add_dri_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->gpe_context_tx->dynamic_state.bo, + 0, + ALIGN(res_size, 64), + mbenc_param->gpe_context_tx->curbe_offset, + VP9_BTI_MBENC_TX_CURBE_G9); + + break; + } + case VP9_MEDIA_STATE_MBENC_P: + { + obj_surface = mbenc_param->curr_frame_obj; + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 0, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_CURR_Y_G9); + + gen9_add_2d_gpe_surface(ctx, gpe_context, + obj_surface, + 1, + 1, + I965_SURFACEFORMAT_R16_UINT, + VP9_BTI_MBENC_CURR_UV_G9); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + obj_surface, + VP9_BTI_MBENC_CURR_NV12_G9); + + if (mbenc_param->last_ref_obj) + { + obj_surface = mbenc_param->last_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->dys_in_use && + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || + (vp9_priv_surface->frame_height != vp9_state->frame_height))) + tmp_input = vp9_priv_surface->dys_surface_obj; + else + tmp_input = obj_surface; + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_LAST_NV12_G9); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_LAST_NV12_G9 + 1); + + } + + if (mbenc_param->golden_ref_obj) + { + obj_surface = mbenc_param->golden_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->dys_in_use && + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || + (vp9_priv_surface->frame_height != vp9_state->frame_height))) + tmp_input = vp9_priv_surface->dys_surface_obj; + else + tmp_input = obj_surface; + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_GOLD_NV12_G9); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_GOLD_NV12_G9 + 1); + + } + + if (mbenc_param->alt_ref_obj) + { + obj_surface = mbenc_param->alt_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->dys_in_use && + ((vp9_priv_surface->frame_width != vp9_state->frame_width) || + (vp9_priv_surface->frame_height != vp9_state->frame_height))) + tmp_input = vp9_priv_surface->dys_surface_obj; + else + tmp_input = obj_surface; + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_ALTREF_NV12_G9); + + gen9_add_adv_gpe_surface(ctx, gpe_context, + tmp_input, + VP9_BTI_MBENC_ALTREF_NV12_G9 + 1); + + } + + if (mbenc_param->hme_enabled) + { + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + mbenc_param->ps4x_memv_data_buffer, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_HME_MV_DATA_G9); + + gen9_add_buffer_2d_gpe_surface(ctx, gpe_context, + mbenc_param->ps4x_memv_distortion_buffer, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_HME_DISTORTION_G9); + } + + if (mbenc_param->segmentation_enabled) + { + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_segmentation_map, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); + + } + + res_size = 16 * mbenc_param->frame_width_in_mb * + mbenc_param->frame_height_in_mb * sizeof(unsigned int); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mode_decision_prev, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_MODE_DECISION_PREV_G9); + + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mode_decision, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_MODE_DECISION_G9); + + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_output_16x16_inter_modes, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9); + + res_size = 160; + + gen9_add_dri_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->gpe_context_tx->dynamic_state.bo, + 0, + ALIGN(res_size, 64), + mbenc_param->gpe_context_tx->curbe_offset, + VP9_BTI_MBENC_TX_CURBE_G9); + + + break; + } + case VP9_MEDIA_STATE_MBENC_TX: + { + obj_surface = mbenc_param->curr_frame_obj; + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 0, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_CURR_Y_G9); + + gen9_add_2d_gpe_surface(ctx, + gpe_context, + obj_surface, + 1, + 1, + I965_SURFACEFORMAT_R16_UINT, + VP9_BTI_MBENC_CURR_UV_G9); + + if (mbenc_param->segmentation_enabled) + { + gen9_add_buffer_2d_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_segmentation_map, + 1, + I965_SURFACEFORMAT_R8_UNORM, + VP9_BTI_MBENC_SEGMENTATION_MAP_G9); + + } + + res_size = 16 * mbenc_param->frame_width_in_mb * + mbenc_param->frame_height_in_mb * sizeof(unsigned int); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mode_decision, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_MODE_DECISION_G9); + + res_size = frame_width_in_sb * frame_height_in_sb * 4 * sizeof(unsigned int); + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mb_code_surface, + 0, + res_size / 4, + 0, + VP9_BTI_MBENC_PAK_DATA_G9); + + // CU Record + res_size = frame_width_in_sb * frame_height_in_sb * + 64 * 16 * sizeof(unsigned int); + + gen9_add_buffer_gpe_surface(ctx, + gpe_context, + mbenc_param->pres_mb_code_surface, + 0, + res_size / 4, + mbenc_param->mb_data_offset, + VP9_BTI_MBENC_CU_RECORDS_G9); + } + default: + break; + } + + return; +} + +static VAStatus +gen9_vp9_mbenc_kernel(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + int media_function) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct i965_gpe_context *gpe_context, *tx_gpe_context; + struct gpe_media_object_walker_parameter media_object_walker_param; + struct vp9_encoder_kernel_walker_parameter kernel_walker_param; + unsigned int resolution_x, resolution_y; + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_mbenc_curbe_param curbe_param; + struct gen9_vp9_mbenc_surface_param surface_param; + VAStatus va_status = VA_STATUS_SUCCESS; + int mbenc_gpe_index = 0; + struct object_surface *obj_surface; + struct gen9_surface_vp9 *vp9_priv_surface; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_ENCODING_ERROR; + + pic_param = vp9_state->pic_param; + + switch (media_function) + { + case VP9_MEDIA_STATE_MBENC_I_32x32: + mbenc_gpe_index = VP9_MBENC_IDX_KEY_32x32; + break; + + case VP9_MEDIA_STATE_MBENC_I_16x16: + mbenc_gpe_index = VP9_MBENC_IDX_KEY_16x16; + break; + + case VP9_MEDIA_STATE_MBENC_P: + mbenc_gpe_index = VP9_MBENC_IDX_INTER; + break; + + case VP9_MEDIA_STATE_MBENC_TX: + mbenc_gpe_index = VP9_MBENC_IDX_TX; + break; + + default: + va_status = VA_STATUS_ERROR_OPERATION_FAILED; + return va_status; + } + + gpe_context = &(vme_context->mbenc_context.gpe_contexts[mbenc_gpe_index]); + tx_gpe_context = &(vme_context->mbenc_context.gpe_contexts[VP9_MBENC_IDX_TX]); + + gen9_gpe_reset_binding_table(ctx, gpe_context); + + // Set curbe + if (!vp9_state->mbenc_curbe_set_in_brc_update) + { + if(media_function == VP9_MEDIA_STATE_MBENC_I_32x32 || + media_function == VP9_MEDIA_STATE_MBENC_P) + { + memset(&curbe_param, 0, sizeof(curbe_param)); + curbe_param.ppic_param = vp9_state->pic_param; + curbe_param.pseq_param = vp9_state->seq_param; + curbe_param.psegment_param = vp9_state->segment_param; + curbe_param.frame_width_in_mb = vp9_state->frame_width_in_mb; + curbe_param.frame_height_in_mb = vp9_state->frame_height_in_mb; + curbe_param.last_ref_obj = vp9_state->last_ref_obj; + curbe_param.golden_ref_obj = vp9_state->golden_ref_obj; + curbe_param.alt_ref_obj = vp9_state->alt_ref_obj; + curbe_param.hme_enabled = vp9_state->hme_enabled; + curbe_param.ref_frame_flag = vp9_state->ref_frame_flag; + curbe_param.picture_coding_type = vp9_state->picture_coding_type; + curbe_param.media_state_type = media_function; + curbe_param.mbenc_curbe_set_in_brc_update = vp9_state->mbenc_curbe_set_in_brc_update; + + vme_context->pfn_set_curbe_mbenc(ctx, + encode_state, + gpe_context, + encoder_context, + &curbe_param); + } + } + + memset(&surface_param, 0, sizeof(surface_param)); + surface_param.media_state_type = media_function; + surface_param.picture_coding_type = vp9_state->picture_coding_type; + surface_param.frame_width = vp9_state->frame_width; + surface_param.frame_height = vp9_state->frame_height; + surface_param.frame_width_in_mb = vp9_state->frame_width_in_mb; + surface_param.frame_height_in_mb = vp9_state->frame_height_in_mb; + surface_param.hme_enabled = vp9_state->hme_enabled; + surface_param.segmentation_enabled = pic_param->pic_flags.bits.segmentation_enabled; + surface_param.pres_segmentation_map = &vme_context->mb_segment_map_surface; + surface_param.ps4x_memv_data_buffer = &vme_context->s4x_memv_data_buffer; + surface_param.ps4x_memv_distortion_buffer = &vme_context->s4x_memv_distortion_buffer; + surface_param.pres_mode_decision = + &vme_context->res_mode_decision[vp9_state->curr_mode_decision_index]; + surface_param.pres_mode_decision_prev = + &vme_context->res_mode_decision[!vp9_state->curr_mode_decision_index]; + surface_param.pres_output_16x16_inter_modes = &vme_context->res_output_16x16_inter_modes; + surface_param.pres_mbenc_curbe_buffer = NULL; + surface_param.last_ref_obj = vp9_state->last_ref_obj; + surface_param.golden_ref_obj = vp9_state->golden_ref_obj; + surface_param.alt_ref_obj = vp9_state->alt_ref_obj; + surface_param.pres_mb_code_surface = &vme_context->res_mb_code_surface; + surface_param.gpe_context_tx = tx_gpe_context; + surface_param.mb_data_offset = vp9_state->mb_data_offset; + + obj_surface = encode_state->reconstructed_object; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + if (vp9_state->dys_in_use && + (pic_param->frame_width_src != pic_param->frame_height_dst || + pic_param->frame_height_src != pic_param->frame_height_dst)) { + obj_surface = vp9_priv_surface->dys_surface_obj; + } else + obj_surface = encode_state->input_yuv_object; + + surface_param.curr_frame_obj = obj_surface; + + vme_context->pfn_send_mbenc_surface(ctx, + encode_state, + gpe_context, + encoder_context, + &surface_param); + + if (media_function == VP9_MEDIA_STATE_MBENC_I_32x32) { + resolution_x = ALIGN(vp9_state->frame_width, 32) / 32; + resolution_y = ALIGN(vp9_state->frame_height, 32) / 32; + } else { + resolution_x = ALIGN(vp9_state->frame_width, 16) / 16; + resolution_y = ALIGN(vp9_state->frame_height, 16) / 16; + } + + memset(&kernel_walker_param, 0, sizeof(kernel_walker_param)); + kernel_walker_param.resolution_x = resolution_x; + kernel_walker_param.resolution_y = resolution_y; + + if (media_function == VP9_MEDIA_STATE_MBENC_P || + media_function == VP9_MEDIA_STATE_MBENC_I_16x16) { + kernel_walker_param.use_scoreboard = 1; + kernel_walker_param.no_dependency = 0; + kernel_walker_param.walker_degree = VP9_45Z_DEGREE; + } else { + kernel_walker_param.use_scoreboard = 0; + kernel_walker_param.no_dependency = 1; + } + + gen8_gpe_setup_interface_data(ctx, gpe_context); + + gen9_init_media_object_walker_parameter(encoder_context, &kernel_walker_param, &media_object_walker_param); + + gen9_run_kernel_media_object_walker(ctx, encoder_context, + gpe_context, + media_function, + &media_object_walker_param); + return va_status; +} + +static void +gen9_init_gpe_context_vp9(struct i965_gpe_context *gpe_context, + struct vp9_encoder_kernel_parameter *kernel_param) +{ + gpe_context->curbe.length = kernel_param->curbe_size; // in bytes + + gpe_context->curbe_size = ALIGN(kernel_param->curbe_size, 64); + + gpe_context->sampler_size = 0; + if (kernel_param->sampler_size) { + gpe_context->sampler_size = ALIGN(kernel_param->sampler_size, 64); + } + + gpe_context->idrt.entry_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64); // 8 dws, 1 register + gpe_context->idrt.max_entries = NUM_KERNELS_PER_GPE_CONTEXT; + gpe_context->idrt_size = ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * + NUM_KERNELS_PER_GPE_CONTEXT; + + gpe_context->surface_state_binding_table.max_entries = MAX_VP9_ENCODER_SURFACES; + gpe_context->surface_state_binding_table.binding_table_offset = 0; + gpe_context->surface_state_binding_table.surface_state_offset = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64); + gpe_context->surface_state_binding_table.length = ALIGN(MAX_VP9_ENCODER_SURFACES * 4, 64) + ALIGN(MAX_VP9_ENCODER_SURFACES * SURFACE_STATE_PADDED_SIZE_GEN9, 64); + + gpe_context->vfe_state.max_num_threads = 112; // 16 EU * 7 threads + gpe_context->vfe_state.curbe_allocation_size = MAX(1, ALIGN(gpe_context->curbe.length, 32) >> 5); // in registers + gpe_context->vfe_state.urb_entry_size = MAX(1, ALIGN(kernel_param->inline_data_size, 32) >> 5); // in registers + gpe_context->vfe_state.num_urb_entries = (MAX_URB_SIZE - + gpe_context->vfe_state.curbe_allocation_size - + ((gpe_context->idrt.entry_size >> 5) * + gpe_context->idrt.max_entries)) / gpe_context->vfe_state.urb_entry_size; + gpe_context->vfe_state.num_urb_entries = CLAMP(1, 127, gpe_context->vfe_state.num_urb_entries); + gpe_context->vfe_state.gpgpu_mode = 0; +} + +static void +gen9_init_vfe_scoreboard_vp9(struct i965_gpe_context *gpe_context, + struct vp9_encoder_scoreboard_parameter *scoreboard_param) +{ + gpe_context->vfe_desc5.scoreboard0.mask = scoreboard_param->mask; + gpe_context->vfe_desc5.scoreboard0.type = scoreboard_param->type; + gpe_context->vfe_desc5.scoreboard0.enable = scoreboard_param->enable; + + if (scoreboard_param->walkpat_flag) { + gpe_context->vfe_desc5.scoreboard0.mask = 0x0F; + gpe_context->vfe_desc5.scoreboard0.type = 1; + + gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0; + gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF; + + gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0; + gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE; + + gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF; + gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3; + + gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF; + gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1; + } else { + // Scoreboard 0 + gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF; + gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0; + + // Scoreboard 1 + gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0; + gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF; + + // Scoreboard 2 + gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1; + gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF; + + // Scoreboard 3 + gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF; + gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF; + + // Scoreboard 4 + gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF; + gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1; + + // Scoreboard 5 + gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0; + gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE; + + // Scoreboard 6 + gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1; + gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE; + + // Scoreboard 7 + gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF; + gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE; + } +} + +#define VP9_MI_BLOCK_MASK 0x07 +#define VP9_VME_REF_WIN 48 + +static VAStatus +gen9_encode_vp9_check_parameter(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param; + VAEncSequenceParameterBufferVP9 *seq_param; + struct object_surface *obj_surface; + struct object_buffer *obj_buffer; + struct gen9_surface_vp9 *vp9_priv_surface; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!encode_state->pic_param_ext || + !encode_state->pic_param_ext->buffer) { + return VA_STATUS_ERROR_INVALID_PARAMETER; + } + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; + + if (pic_param->frame_width_src & VP9_MI_BLOCK_MASK || + pic_param->frame_height_src & VP9_MI_BLOCK_MASK || + pic_param->frame_width_dst & VP9_MI_BLOCK_MASK || + pic_param->frame_height_dst & VP9_MI_BLOCK_MASK) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + obj_buffer = BUFFER(pic_param->coded_buf); + + if (!obj_buffer || + !obj_buffer->buffer_store || + !obj_buffer->buffer_store->bo) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + encode_state->coded_buf_object = obj_buffer; + + vp9_state->status_buffer.bo = obj_buffer->buffer_store->bo; + + encode_state->reconstructed_object = SURFACE(pic_param->reconstructed_frame); + encode_state->input_yuv_object = SURFACE(encode_state->current_render_target); + + if (!encode_state->reconstructed_object || + !encode_state->input_yuv_object) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + vp9_state->curr_frame = pic_param->reconstructed_frame; + vp9_state->ref_frame_flag = 0; + if (pic_param->pic_flags.bits.frame_type == KEY_FRAME || + pic_param->pic_flags.bits.intra_only) { + /* this will be regarded as I-frame type */ + vp9_state->picture_coding_type = 0; + vp9_state->last_ref_obj = NULL; + vp9_state->golden_ref_obj = NULL; + vp9_state->alt_ref_obj = NULL; + } else { + vp9_state->picture_coding_type = 1; + vp9_state->ref_frame_flag = pic_param->ref_flags.bits.ref_frame_ctrl_l0 | + pic_param->ref_flags.bits.ref_frame_ctrl_l1; + + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx]); + vp9_state->last_ref_obj = obj_surface; + if (!obj_surface || + !obj_surface->bo || + !obj_surface->private_data) { + vp9_state->last_ref_obj = NULL; + vp9_state->ref_frame_flag &= ~(VP9_LAST_REF); + } + + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]); + vp9_state->golden_ref_obj = obj_surface; + if (!obj_surface || + !obj_surface->bo || + !obj_surface->private_data) { + vp9_state->golden_ref_obj = NULL; + vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF); + } + + obj_surface = SURFACE(pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]); + vp9_state->alt_ref_obj = obj_surface; + if (!obj_surface || + !obj_surface->bo || + !obj_surface->private_data) { + vp9_state->alt_ref_obj = NULL; + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); + } + + /* remove the duplicated flag and ref frame list */ + if (vp9_state->ref_frame_flag & VP9_LAST_REF) { + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] == + pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx]) { + vp9_state->ref_frame_flag &= ~(VP9_GOLDEN_REF); + vp9_state->golden_ref_obj = NULL; + } + + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_last_idx] == + pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) { + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); + vp9_state->alt_ref_obj = NULL; + } + } + + if (vp9_state->ref_frame_flag & VP9_GOLDEN_REF) { + if (pic_param->reference_frames[pic_param->ref_flags.bits.ref_gf_idx] == + pic_param->reference_frames[pic_param->ref_flags.bits.ref_arf_idx]) { + vp9_state->ref_frame_flag &= ~(VP9_ALT_REF); + vp9_state->alt_ref_obj = NULL; + } + } + + if (vp9_state->ref_frame_flag == 0) + return VA_STATUS_ERROR_INVALID_PARAMETER; + } + + seg_param = NULL; + if (pic_param->pic_flags.bits.segmentation_enabled) { + if (!encode_state->q_matrix || + !encode_state->q_matrix->buffer) { + return VA_STATUS_ERROR_INVALID_PARAMETER; + } + seg_param = (VAEncMiscParameterTypeVP9PerSegmantParam *) + encode_state->q_matrix->buffer; + } + + seq_param = NULL; + if (encode_state->seq_param_ext && + encode_state->seq_param_ext->buffer) + seq_param = (VAEncSequenceParameterBufferVP9 *)encode_state->seq_param_ext->buffer; + + if (!seq_param) { + seq_param = &vp9_state->bogus_seq_param; + } + + vp9_state->pic_param = pic_param; + vp9_state->segment_param = seg_param; + vp9_state->seq_param = seq_param; + + obj_surface = encode_state->reconstructed_object; + if (pic_param->frame_width_dst > obj_surface->orig_width || + pic_param->frame_height_dst > obj_surface->orig_height) + return VA_STATUS_ERROR_INVALID_SURFACE; + + if (!vp9_state->dys_enabled && + ((pic_param->frame_width_src != pic_param->frame_width_dst) || + (pic_param->frame_height_src != pic_param->frame_height_dst))) + return VA_STATUS_ERROR_UNIMPLEMENTED; + + if (vp9_state->brc_enabled) { + if (vp9_state->brc_flag_check & VP9_BRC_FAILURE) { + WARN_ONCE("Rate control misc_parameter is required for BRC\n"); + return VA_STATUS_ERROR_INVALID_PARAMETER; + } + + if (vp9_state->first_frame) { + unsigned int brc_flag; + VAEncMiscParameterBuffer *misc_param; + + brc_flag = VP9_BRC_SEQ | VP9_BRC_RC; + if ((vp9_state->brc_flag_check & brc_flag) != brc_flag) { + WARN_ONCE("SPS/RC misc is required for BRC\n"); + return VA_STATUS_ERROR_INVALID_PARAMETER; + } + + /* check the corresponding BRC parameter for CBR and VBR */ + if (encoder_context->rate_control_mode == VA_RC_CBR) { + vp9_state->target_bit_rate = seq_param->bits_per_second; + vp9_state->gop_size = seq_param->intra_period; + + if (vp9_state->brc_flag_check & VP9_BRC_HRD) { + VAEncMiscParameterHRD *misc_param_hrd; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeHRD]->buffer; + misc_param_hrd = (VAEncMiscParameterHRD *)misc_param->data; + + vp9_state->init_vbv_buffer_fullness_in_bit = misc_param_hrd->initial_buffer_fullness; + vp9_state->vbv_buffer_size_in_bit = misc_param_hrd->buffer_size; + } + + if (vp9_state->brc_flag_check & VP9_BRC_FR) { + VAEncMiscParameterFrameRate *misc_param_fr; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeFrameRate]->buffer; + misc_param_fr = (VAEncMiscParameterFrameRate *)misc_param->data; + + vp9_state->frame_rate = misc_param_fr->framerate; + } else { + /* Assign the default frame rate */ + vp9_state->frame_rate = 30; + } + + /* RC misc will override HRD parameter */ + if (vp9_state->brc_flag_check & VP9_BRC_RC) { + VAEncMiscParameterRateControl *misc_param_rc; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeRateControl]->buffer; + misc_param_rc = (VAEncMiscParameterRateControl *)misc_param->data; + + vp9_state->target_bit_rate = misc_param_rc->bits_per_second; + vp9_state->vbv_buffer_size_in_bit = (misc_param_rc->bits_per_second / 1000) * + misc_param_rc->window_size; + vp9_state->init_vbv_buffer_fullness_in_bit = vp9_state->vbv_buffer_size_in_bit / 2; + vp9_state->window_size = misc_param_rc->window_size; + } + vp9_state->max_bit_rate = vp9_state->target_bit_rate; + vp9_state->min_bit_rate = vp9_state->target_bit_rate; + } else { + /* VBR mode */ + brc_flag = VP9_BRC_SEQ | VP9_BRC_RC; + vp9_state->target_bit_rate = seq_param->bits_per_second; + vp9_state->gop_size = seq_param->intra_period; + + if (vp9_state->brc_flag_check & VP9_BRC_FR) { + VAEncMiscParameterFrameRate *misc_param_fr; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeFrameRate]->buffer; + misc_param_fr = (VAEncMiscParameterFrameRate *)misc_param->data; + + vp9_state->frame_rate = misc_param_fr->framerate; + } else { + /* Assign the default frame rate */ + vp9_state->frame_rate = 30; + } + + if (vp9_state->brc_flag_check & VP9_BRC_RC) { + VAEncMiscParameterRateControl *misc_param_rc; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeRateControl]->buffer; + misc_param_rc = (VAEncMiscParameterRateControl *)misc_param->data; + + vp9_state->max_bit_rate = misc_param_rc->bits_per_second; + vp9_state->vbv_buffer_size_in_bit = (misc_param_rc->bits_per_second / 1000) * + misc_param_rc->window_size; + vp9_state->init_vbv_buffer_fullness_in_bit = vp9_state->vbv_buffer_size_in_bit / 2; + vp9_state->target_bit_rate = (misc_param_rc->bits_per_second / 100) * + misc_param_rc->target_percentage; + vp9_state->min_bit_rate = (misc_param_rc->bits_per_second / 100) * + (2 * misc_param_rc->target_percentage - 100); + vp9_state->target_percentage = misc_param_rc->target_percentage; + vp9_state->window_size = misc_param_rc->window_size; + } + } + } + else if (vp9_state->picture_coding_type == KEY_FRAME){ + VAEncMiscParameterBuffer *misc_param; + /* update the BRC parameter only when it is key-frame */ + /* If the parameter related with RC is changed. Reset BRC */ + if (vp9_state->brc_flag_check & VP9_BRC_FR) { + VAEncMiscParameterFrameRate *misc_param_fr; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeFrameRate]->buffer; + misc_param_fr = (VAEncMiscParameterFrameRate *)misc_param->data; + + if (vp9_state->frame_rate != misc_param_fr->framerate) { + vp9_state->brc_reset = 1; + vp9_state->frame_rate = misc_param_fr->framerate; + } + } + + /* check the GOP size. And bit_per_second in SPS is ignored */ + if (vp9_state->brc_flag_check & VP9_BRC_SEQ) { + if (vp9_state->gop_size != seq_param->intra_period) { + vp9_state->brc_reset = 1; + vp9_state->gop_size = seq_param->intra_period; + } + } + + /* update the bit_per_second */ + if (vp9_state->brc_flag_check & VP9_BRC_RC) { + VAEncMiscParameterRateControl *misc_param_rc; + + misc_param = (VAEncMiscParameterBuffer *) + encode_state->misc_param[VAEncMiscParameterTypeRateControl]->buffer; + misc_param_rc = (VAEncMiscParameterRateControl *)misc_param->data; + + if (encoder_context->rate_control_mode == VA_RC_CBR) { + if (vp9_state->target_bit_rate != misc_param_rc->bits_per_second || + vp9_state->window_size != misc_param_rc->window_size) { + vp9_state->target_bit_rate = misc_param_rc->bits_per_second; + vp9_state->vbv_buffer_size_in_bit = (misc_param_rc->bits_per_second / 1000) * + misc_param_rc->window_size; + vp9_state->init_vbv_buffer_fullness_in_bit = vp9_state->vbv_buffer_size_in_bit * 2; + vp9_state->window_size = misc_param_rc->window_size; + vp9_state->max_bit_rate = vp9_state->target_bit_rate; + vp9_state->min_bit_rate = vp9_state->target_bit_rate; + vp9_state->brc_reset = 1; + } + } else { + /* VBR mode */ + if (vp9_state->max_bit_rate != misc_param_rc->bits_per_second || + vp9_state->target_percentage != misc_param_rc->target_percentage) { + + vp9_state->target_bit_rate = (misc_param_rc->bits_per_second / 100) * + misc_param_rc->target_percentage; + vp9_state->min_bit_rate = (misc_param_rc->bits_per_second / 100) * + (2 * misc_param_rc->target_percentage - 100); + vp9_state->max_bit_rate = misc_param_rc->bits_per_second; + vp9_state->vbv_buffer_size_in_bit = (misc_param_rc->bits_per_second / 1000) * + misc_param_rc->window_size; + vp9_state->init_vbv_buffer_fullness_in_bit = vp9_state->vbv_buffer_size_in_bit / 2; + vp9_state->target_percentage = misc_param_rc->target_percentage; + vp9_state->window_size = misc_param_rc->window_size; + vp9_state->brc_reset = 1; + } + } + } + } + } + + vp9_state->frame_width = pic_param->frame_width_dst; + vp9_state->frame_height = pic_param->frame_height_dst; + + vp9_state->frame_width_4x = ALIGN(vp9_state->frame_width / 4, 16); + vp9_state->frame_height_4x = ALIGN(vp9_state->frame_height / 4, 16); + + vp9_state->frame_width_16x = ALIGN(vp9_state->frame_width / 16, 16); + vp9_state->frame_height_16x = ALIGN(vp9_state->frame_height / 16, 16); + + vp9_state->frame_width_in_mb = ALIGN(vp9_state->frame_width, 16) / 16; + vp9_state->frame_height_in_mb = ALIGN(vp9_state->frame_height, 16) / 16; + + vp9_state->downscaled_width_4x_in_mb = vp9_state->frame_width_4x / 16; + vp9_state->downscaled_height_4x_in_mb = vp9_state->frame_height_4x / 16; + vp9_state->downscaled_width_16x_in_mb = vp9_state->frame_width_16x / 16; + vp9_state->downscaled_height_16x_in_mb = vp9_state->frame_height_16x / 16; + + vp9_state->dys_in_use = 0; + if(pic_param->frame_width_src != pic_param->frame_width_dst || + pic_param->frame_height_src != pic_param->frame_height_dst) + vp9_state->dys_in_use = 1; + vp9_state->dys_ref_frame_flag = 0; + /* check the dys setting. The dys is supported by default. */ + if (pic_param->pic_flags.bits.frame_type != KEY_FRAME && + !pic_param->pic_flags.bits.intra_only) { + vp9_state->dys_ref_frame_flag = vp9_state->ref_frame_flag; + + if ((vp9_state->ref_frame_flag & VP9_LAST_REF) && + vp9_state->last_ref_obj) { + obj_surface = vp9_state->last_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->frame_width == vp9_priv_surface->frame_width && + vp9_state->frame_height == vp9_priv_surface->frame_height) + vp9_state->dys_ref_frame_flag &= ~(VP9_LAST_REF); + } + if ((vp9_state->ref_frame_flag & VP9_GOLDEN_REF) && + vp9_state->golden_ref_obj) { + obj_surface = vp9_state->golden_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->frame_width == vp9_priv_surface->frame_width && + vp9_state->frame_height == vp9_priv_surface->frame_height) + vp9_state->dys_ref_frame_flag &= ~(VP9_GOLDEN_REF); + } + if ((vp9_state->ref_frame_flag & VP9_ALT_REF) && + vp9_state->alt_ref_obj) { + obj_surface = vp9_state->alt_ref_obj; + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + + if (vp9_state->frame_width == vp9_priv_surface->frame_width && + vp9_state->frame_height == vp9_priv_surface->frame_height) + vp9_state->dys_ref_frame_flag &= ~(VP9_ALT_REF); + } + if (vp9_state->dys_ref_frame_flag) + vp9_state->dys_in_use = 1; + } + + if (vp9_state->hme_supported) { + vp9_state->hme_enabled = 1; + } else { + vp9_state->hme_enabled = 0; + } + + if (vp9_state->b16xme_supported) { + vp9_state->b16xme_enabled = 1; + } else { + vp9_state->b16xme_enabled = 0; + } + + /* disable HME/16xME if the size is too small */ + if (vp9_state->frame_width_4x <= VP9_VME_REF_WIN || + vp9_state->frame_height_4x <= VP9_VME_REF_WIN) { + vp9_state->hme_enabled = 0; + vp9_state->b16xme_enabled = 0; + } + + if (vp9_state->frame_width_16x < VP9_VME_REF_WIN || + vp9_state->frame_height_16x < VP9_VME_REF_WIN) + vp9_state->b16xme_enabled = 0; + + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME || + pic_param->pic_flags.bits.intra_only) { + vp9_state->hme_enabled = 0; + vp9_state->b16xme_enabled = 0; + } + + vp9_state->mbenc_keyframe_dist_enabled = 0; + if ((vp9_state->picture_coding_type == KEY_FRAME) && + vp9_state->brc_distortion_buffer_supported) + vp9_state->mbenc_keyframe_dist_enabled = 1; + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vme_gpe_kernel_prepare_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_surface_param surface_param; + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + struct object_surface *obj_surface; + struct gen9_surface_vp9 *vp9_surface; + int driver_header_flag = 0; + VAStatus va_status; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + /* this is to check whether the driver should generate the uncompressed header */ + driver_header_flag = 1; + if (encode_state->packed_header_data_ext && + encode_state->packed_header_data_ext[0] && + pic_param->bit_offset_first_partition_size) { + VAEncPackedHeaderParameterBuffer *param = NULL; + + param = (VAEncPackedHeaderParameterBuffer *)encode_state->packed_header_params_ext[0]->buffer; + + if (param->type == VAEncPackedHeaderRawData) { + char *header_data; + unsigned int length_in_bits; + + header_data = (char *)encode_state->packed_header_data_ext[0]->buffer; + length_in_bits = param->bit_length; + driver_header_flag = 0; + + vp9_state->frame_header.bit_offset_first_partition_size = + pic_param->bit_offset_first_partition_size; + vp9_state->header_length = ALIGN(length_in_bits, 8) >> 3; + vp9_state->alias_insert_data = header_data; + + vp9_state->frame_header.bit_offset_ref_lf_delta = pic_param->bit_offset_ref_lf_delta; + vp9_state->frame_header.bit_offset_mode_lf_delta = pic_param->bit_offset_mode_lf_delta; + vp9_state->frame_header.bit_offset_lf_level = pic_param->bit_offset_lf_level; + vp9_state->frame_header.bit_offset_qindex = pic_param->bit_offset_qindex; + vp9_state->frame_header.bit_offset_segmentation = pic_param->bit_offset_segmentation; + vp9_state->frame_header.bit_size_segmentation = pic_param->bit_size_segmentation; + } + } + + if (driver_header_flag) { + memset(&vp9_state->frame_header, 0, sizeof(vp9_state->frame_header)); + intel_write_uncompressed_header(encode_state, + VAProfileVP9Profile0, + vme_context->frame_header_data, + &vp9_state->header_length, + &vp9_state->frame_header); + vp9_state->alias_insert_data = vme_context->frame_header_data; + } + + va_status = i965_check_alloc_surface_bo(ctx, encode_state->input_yuv_object, + 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + va_status = i965_check_alloc_surface_bo(ctx, encode_state->reconstructed_object, + 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + surface_param.frame_width = vp9_state->frame_width; + surface_param.frame_height = vp9_state->frame_height; + va_status = gen9_vp9_init_check_surfaces(ctx, + encode_state->reconstructed_object, + &surface_param); + + { + vp9_surface = (struct gen9_surface_vp9*)encode_state->reconstructed_object; + + vp9_surface->qp_value = pic_param->luma_ac_qindex + pic_param->luma_dc_qindex_delta; + } + if (vp9_state->dys_in_use && + (pic_param->frame_width_src != pic_param->frame_width_dst || + pic_param->frame_height_src != pic_param->frame_height_dst)) { + surface_param.frame_width = pic_param->frame_width_dst; + surface_param.frame_height = pic_param->frame_height_dst; + va_status = gen9_vp9_check_dys_surfaces(ctx, + encode_state->reconstructed_object, + &surface_param); + + if (va_status) + return va_status; + } + + if (vp9_state->dys_ref_frame_flag) { + if ((vp9_state->dys_ref_frame_flag & VP9_LAST_REF) && + vp9_state->last_ref_obj) { + obj_surface = vp9_state->last_ref_obj; + surface_param.frame_width = vp9_state->frame_width; + surface_param.frame_height = vp9_state->frame_height; + va_status = gen9_vp9_check_dys_surfaces(ctx, + obj_surface, + &surface_param); + + if (va_status) + return va_status; + } + if ((vp9_state->dys_ref_frame_flag & VP9_GOLDEN_REF) && + vp9_state->golden_ref_obj) { + obj_surface = vp9_state->golden_ref_obj; + surface_param.frame_width = vp9_state->frame_width; + surface_param.frame_height = vp9_state->frame_height; + va_status = gen9_vp9_check_dys_surfaces(ctx, + obj_surface, + &surface_param); + + if (va_status) + return va_status; + } + if ((vp9_state->dys_ref_frame_flag & VP9_ALT_REF) && + vp9_state->alt_ref_obj) { + obj_surface = vp9_state->alt_ref_obj; + surface_param.frame_width = vp9_state->frame_width; + surface_param.frame_height = vp9_state->frame_height; + va_status = gen9_vp9_check_dys_surfaces(ctx, + obj_surface, + &surface_param); + + if (va_status) + return va_status; + } + } + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + /* check the corresponding ref_frame_flag && dys_ref_frame_flag */ + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vme_gpe_kernel_init_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context; + struct vp9_dys_context *dys_context = &vme_context->dys_context; + struct gpe_dynamic_state_parameter ds_param; + int i; + + /* + * BRC will update MBEnc curbe data buffer, so initialize GPE context for + * MBEnc first + */ + for (i = 0; i < NUM_VP9_MBENC; i++) { + gen8_gpe_context_init(ctx, &mbenc_context->gpe_contexts[i]); + } + + /* + * VP9_MBENC_XXX uses the same dynamic state buffer as they share the same + * curbe_buffer. + */ + ds_param.bo_size = ALIGN(sizeof(vp9_mbenc_curbe_data), 64) + 128 + + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * NUM_VP9_MBENC; + mbenc_context->mbenc_bo_dys = dri_bo_alloc(i965->intel.bufmgr, + "mbenc_dys", + ds_param.bo_size, + 0x1000); + mbenc_context->mbenc_bo_size = ds_param.bo_size; + + ds_param.bo = mbenc_context->mbenc_bo_dys; + ds_param.curbe_offset = 0; + ds_param.sampler_offset = ALIGN(sizeof(vp9_mbenc_curbe_data), 64); + for (i = 0; i < NUM_VP9_MBENC; i++) { + ds_param.idrt_offset = ds_param.sampler_offset + 128 + + ALIGN(sizeof(struct gen8_interface_descriptor_data), 64) * i; + + gen8_gpe_context_set_dynamic_buffer(ctx, + &mbenc_context->gpe_contexts[i], + &ds_param); + } + + gen8_gpe_context_init(ctx, &dys_context->gpe_context); + gen9_vp9_dys_set_sampler_state(&dys_context->gpe_context); + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vme_gpe_kernel_final_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct vp9_mbenc_context *mbenc_context = &vme_context->mbenc_context; + + dri_bo_unreference(mbenc_context->mbenc_bo_dys); + mbenc_context->mbenc_bo_dys = NULL; + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vme_gpe_kernel_run_vp9(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = encoder_context->vme_context; + struct gen9_vp9_state *vp9_state; + int i; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state || !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + if (vp9_state->dys_in_use) { + gen9_vp9_run_dys_refframes(ctx, encode_state, encoder_context); + } + + if (vp9_state->brc_enabled && (vp9_state->brc_reset || !vp9_state->brc_inited)) { + gen9_vp9_brc_init_reset_kernel(ctx, encode_state, encoder_context); + } + + if (vp9_state->picture_coding_type == KEY_FRAME) { + for (i = 0; i < 2; i++) + i965_zero_gpe_resource(&vme_context->res_mode_decision[i]); + } + + if (vp9_state->hme_supported) { + gen9_vp9_scaling_kernel(ctx, encode_state, + encoder_context, + 0); + if (vp9_state->b16xme_supported) { + gen9_vp9_scaling_kernel(ctx, encode_state, + encoder_context, + 1); + } + } + + if (vp9_state->picture_coding_type && vp9_state->hme_enabled) { + if (vp9_state->b16xme_enabled) + gen9_vp9_me_kernel(ctx, encode_state, + encoder_context, + 1); + + gen9_vp9_me_kernel(ctx, encode_state, + encoder_context, + 0); + } + + if (vp9_state->brc_enabled) { + if (vp9_state->mbenc_keyframe_dist_enabled) + gen9_vp9_brc_intra_dist_kernel(ctx, + encode_state, + encoder_context); + + gen9_vp9_brc_update_kernel(ctx, encode_state, + encoder_context); + } + + if (vp9_state->picture_coding_type == KEY_FRAME) { + gen9_vp9_mbenc_kernel(ctx, encode_state, + encoder_context, + VP9_MEDIA_STATE_MBENC_I_32x32); + gen9_vp9_mbenc_kernel(ctx, encode_state, + encoder_context, + VP9_MEDIA_STATE_MBENC_I_16x16); + } else { + gen9_vp9_mbenc_kernel(ctx, encode_state, + encoder_context, + VP9_MEDIA_STATE_MBENC_P); + } + + gen9_vp9_mbenc_kernel(ctx, encode_state, + encoder_context, + VP9_MEDIA_STATE_MBENC_TX); + + vp9_state->curr_mode_decision_index ^= 1; + if (vp9_state->brc_enabled) { + vp9_state->brc_inited = 1; + vp9_state->brc_reset = 0; + } + + return VA_STATUS_SUCCESS; +} + +static VAStatus +gen9_vme_pipeline_vp9(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + VAStatus va_status; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *) encoder_context->enc_priv_state; + + if (!vp9_state) + return VA_STATUS_ERROR_INVALID_CONTEXT; + + va_status = gen9_encode_vp9_check_parameter(ctx, encode_state, encoder_context); + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + va_status = gen9_vp9_allocate_resources(ctx, encode_state, + encoder_context, + !vp9_state->brc_allocated); + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + vp9_state->brc_allocated = 1; + + va_status = gen9_vme_gpe_kernel_prepare_vp9(ctx, encode_state, encoder_context); + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + va_status = gen9_vme_gpe_kernel_init_vp9(ctx, encode_state, encoder_context); + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + va_status = gen9_vme_gpe_kernel_run_vp9(ctx, encode_state, encoder_context); + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + gen9_vme_gpe_kernel_final_vp9(ctx, encode_state, encoder_context); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vme_brc_context_destroy_vp9(struct vp9_brc_context *brc_context) +{ + int i; + + for (i = 0; i < NUM_VP9_BRC; i++) + gen8_gpe_context_destroy(&brc_context->gpe_contexts[i]); +} + +static void +gen9_vme_scaling_context_destroy_vp9(struct vp9_scaling_context *scaling_context) +{ + int i; + + for (i = 0; i < NUM_VP9_SCALING; i++) + gen8_gpe_context_destroy(&scaling_context->gpe_contexts[i]); +} + +static void +gen9_vme_me_context_destroy_vp9(struct vp9_me_context *me_context) +{ + gen8_gpe_context_destroy(&me_context->gpe_context); +} + +static void +gen9_vme_mbenc_context_destroy_vp9(struct vp9_mbenc_context *mbenc_context) +{ + int i; + + for (i = 0; i < NUM_VP9_MBENC; i++) + gen8_gpe_context_destroy(&mbenc_context->gpe_contexts[i]); + dri_bo_unreference(mbenc_context->mbenc_bo_dys); + mbenc_context->mbenc_bo_size = 0; +} + +static void +gen9_vme_dys_context_destroy_vp9(struct vp9_dys_context *dys_context) +{ + gen8_gpe_context_destroy(&dys_context->gpe_context); +} + +static void +gen9_vme_kernel_context_destroy_vp9(struct gen9_encoder_context_vp9 *vme_context) +{ + gen9_vp9_free_resources(vme_context); + gen9_vme_scaling_context_destroy_vp9(&vme_context->scaling_context); + gen9_vme_me_context_destroy_vp9(&vme_context->me_context); + gen9_vme_mbenc_context_destroy_vp9(&vme_context->mbenc_context); + gen9_vme_brc_context_destroy_vp9(&vme_context->brc_context); + gen9_vme_dys_context_destroy_vp9(&vme_context->dys_context); + + return; +} + +static void +gen9_vme_context_destroy_vp9(void *context) +{ + struct gen9_encoder_context_vp9 *vme_context = context; + + if (!vme_context) + return; + + gen9_vme_kernel_context_destroy_vp9(vme_context); + + free(vme_context); + + return; +} + +static void +gen9_vme_scaling_context_init_vp9(VADriverContextP ctx, + struct gen9_encoder_context_vp9 *vme_context, + struct vp9_scaling_context *scaling_context) +{ + struct i965_gpe_context *gpe_context = NULL; + struct vp9_encoder_kernel_parameter kernel_param; + struct vp9_encoder_scoreboard_parameter scoreboard_param; + struct i965_kernel scale_kernel; + + kernel_param.curbe_size = sizeof(vp9_scaling4x_curbe_data_cm); + kernel_param.inline_data_size = sizeof(vp9_scaling4x_inline_data_cm); + kernel_param.sampler_size = 0; + + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); + scoreboard_param.mask = 0xFF; + scoreboard_param.enable = vme_context->use_hw_scoreboard; + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; + scoreboard_param.walkpat_flag = 0; + + gpe_context = &scaling_context->gpe_contexts[0]; + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + scaling_context->scaling_4x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y; + scaling_context->scaling_4x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y; + scaling_context->scaling_4x_bti.scaling_frame_mbv_proc_stat_dst = + VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM; + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_SCALING4X, + 0, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + + kernel_param.curbe_size = sizeof(vp9_scaling2x_curbe_data_cm); + kernel_param.inline_data_size = 0; + kernel_param.sampler_size = 0; + + gpe_context = &scaling_context->gpe_contexts[1]; + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_SCALING2X, + 0, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + + scaling_context->scaling_2x_bti.scaling_frame_src_y = VP9_BTI_SCALING_FRAME_SRC_Y; + scaling_context->scaling_2x_bti.scaling_frame_dst_y = VP9_BTI_SCALING_FRAME_DST_Y; + return; +} + +static void +gen9_vme_me_context_init_vp9(VADriverContextP ctx, + struct gen9_encoder_context_vp9 *vme_context, + struct vp9_me_context *me_context) +{ + struct i965_gpe_context *gpe_context = NULL; + struct vp9_encoder_kernel_parameter kernel_param; + struct vp9_encoder_scoreboard_parameter scoreboard_param; + struct i965_kernel scale_kernel; + + kernel_param.curbe_size = sizeof(vp9_me_curbe_data); + kernel_param.inline_data_size = 0; + kernel_param.sampler_size = 0; + + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); + scoreboard_param.mask = 0xFF; + scoreboard_param.enable = vme_context->use_hw_scoreboard; + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; + scoreboard_param.walkpat_flag = 0; + + gpe_context = &me_context->gpe_context; + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_ME, + 0, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + + return; +} + +static void +gen9_vme_mbenc_context_init_vp9(VADriverContextP ctx, + struct gen9_encoder_context_vp9 *vme_context, + struct vp9_mbenc_context *mbenc_context) +{ + struct i965_gpe_context *gpe_context = NULL; + struct vp9_encoder_kernel_parameter kernel_param; + struct vp9_encoder_scoreboard_parameter scoreboard_param; + int i; + struct i965_kernel scale_kernel; + + kernel_param.curbe_size = sizeof(vp9_mbenc_curbe_data); + kernel_param.inline_data_size = 0; + kernel_param.sampler_size = 0; + + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); + scoreboard_param.mask = 0xFF; + scoreboard_param.enable = vme_context->use_hw_scoreboard; + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; + + for (i = 0; i < NUM_VP9_MBENC; i++) { + gpe_context = &mbenc_context->gpe_contexts[i]; + + if ((i == VP9_MBENC_IDX_KEY_16x16) || + (i == VP9_MBENC_IDX_INTER)) { + scoreboard_param.walkpat_flag = 1; + } else + scoreboard_param.walkpat_flag = 0; + + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_MBENC, + i, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + } +} + +static void +gen9_vme_brc_context_init_vp9(VADriverContextP ctx, + struct gen9_encoder_context_vp9 *vme_context, + struct vp9_brc_context *brc_context) +{ + struct i965_gpe_context *gpe_context = NULL; + struct vp9_encoder_kernel_parameter kernel_param; + struct vp9_encoder_scoreboard_parameter scoreboard_param; + int i; + struct i965_kernel scale_kernel; + + kernel_param.curbe_size = sizeof(vp9_brc_curbe_data); + kernel_param.inline_data_size = 0; + kernel_param.sampler_size = 0; + + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); + scoreboard_param.mask = 0xFF; + scoreboard_param.enable = vme_context->use_hw_scoreboard; + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; + + for (i = 0; i < NUM_VP9_BRC; i++) { + gpe_context = &brc_context->gpe_contexts[i]; + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_BRC, + i, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + } +} + +static void +gen9_vme_dys_context_init_vp9(VADriverContextP ctx, + struct gen9_encoder_context_vp9 *vme_context, + struct vp9_dys_context *dys_context) +{ + struct i965_gpe_context *gpe_context = NULL; + struct vp9_encoder_kernel_parameter kernel_param; + struct vp9_encoder_scoreboard_parameter scoreboard_param; + struct i965_kernel scale_kernel; + + kernel_param.curbe_size = sizeof(vp9_dys_curbe_data); + kernel_param.inline_data_size = 0; + kernel_param.sampler_size = sizeof(struct gen9_sampler_8x8_avs); + + memset(&scoreboard_param, 0, sizeof(scoreboard_param)); + scoreboard_param.mask = 0xFF; + scoreboard_param.enable = vme_context->use_hw_scoreboard; + scoreboard_param.type = vme_context->use_hw_non_stalling_scoreboard; + scoreboard_param.walkpat_flag = 0; + + gpe_context = &dys_context->gpe_context; + gen9_init_gpe_context_vp9(gpe_context, &kernel_param); + gen9_init_vfe_scoreboard_vp9(gpe_context, &scoreboard_param); + + memset(&scale_kernel, 0, sizeof(scale_kernel)); + + intel_vp9_get_kernel_header_and_size((void *)media_vp9_kernels, + sizeof(media_vp9_kernels), + INTEL_VP9_ENC_DYS, + 0, + &scale_kernel); + + gen8_gpe_load_kernels(ctx, + gpe_context, + &scale_kernel, + 1); + + return; +} + +static Bool +gen9_vme_kernels_context_init_vp9(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct gen9_encoder_context_vp9 *vme_context) +{ + gen9_vme_scaling_context_init_vp9(ctx, vme_context, &vme_context->scaling_context); + gen9_vme_me_context_init_vp9(ctx, vme_context, &vme_context->me_context); + gen9_vme_mbenc_context_init_vp9(ctx, vme_context, &vme_context->mbenc_context); + gen9_vme_dys_context_init_vp9(ctx, vme_context, &vme_context->dys_context); + gen9_vme_brc_context_init_vp9(ctx, vme_context, &vme_context->brc_context); + + vme_context->pfn_set_curbe_brc = gen9_vp9_set_curbe_brc; + vme_context->pfn_set_curbe_me = gen9_vp9_set_curbe_me; + vme_context->pfn_send_me_surface = gen9_vp9_send_me_surface; + vme_context->pfn_send_scaling_surface = gen9_vp9_send_scaling_surface; + + vme_context->pfn_set_curbe_scaling = gen9_vp9_set_curbe_scaling_cm; + + vme_context->pfn_send_dys_surface = gen9_vp9_send_dys_surface; + vme_context->pfn_set_curbe_dys = gen9_vp9_set_curbe_dys; + vme_context->pfn_set_curbe_mbenc = gen9_vp9_set_curbe_mbenc; + vme_context->pfn_send_mbenc_surface = gen9_vp9_send_mbenc_surface; + return true; +} + +static +void gen9_vp9_write_compressed_element(char *buffer, + int index, + int prob, + bool value) +{ + struct vp9_compressed_element *base_element, *vp9_element; + base_element = (struct vp9_compressed_element *)buffer; + + vp9_element = base_element + (index >> 1); + if (index % 2) { + vp9_element->b_valid = 1; + vp9_element->b_probdiff_select = 1; + vp9_element->b_prob_select = (prob == 252) ? 1: 0; + vp9_element->b_bin = value; + } else { + vp9_element->a_valid = 1; + vp9_element->a_probdiff_select = 1; + vp9_element->a_prob_select = (prob == 252) ? 1: 0; + vp9_element->a_bin = value; + } +} + +static void +intel_vp9enc_refresh_frame_internal_buffers(VADriverContextP ctx, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_state *vp9_state; + char *buffer; + int i; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!pak_context || !vp9_state || !vp9_state->pic_param) + return; + + pic_param = vp9_state->pic_param; + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || + (pic_param->pic_flags.bits.intra_only) || + pic_param->pic_flags.bits.error_resilient_mode) { + /* reset current frame_context */ + intel_init_default_vp9_probs(&vp9_state->vp9_current_fc); + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || + pic_param->pic_flags.bits.error_resilient_mode || + (pic_param->pic_flags.bits.reset_frame_context == 3)) { + for (i = 0; i < 4; i++) + memcpy(&vp9_state->vp9_frame_ctx[i], + &vp9_state->vp9_current_fc, + sizeof(FRAME_CONTEXT)); + } else if (pic_param->pic_flags.bits.reset_frame_context == 2) { + i = pic_param->pic_flags.bits.frame_context_idx; + memcpy(&vp9_state->vp9_frame_ctx[i], + &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT)); + } + /* reset the frame_ctx_idx = 0 */ + vp9_state->frame_ctx_idx = 0; + } else { + vp9_state->frame_ctx_idx = pic_param->pic_flags.bits.frame_context_idx; + } + + i965_zero_gpe_resource(&pak_context->res_compressed_input_buffer); + buffer = i965_map_gpe_resource(&pak_context->res_compressed_input_buffer); + + if (!buffer) + return; + + /* write tx_size */ + if ((pic_param->luma_ac_qindex == 0) && + (pic_param->luma_dc_qindex_delta == 0) && + (pic_param->chroma_ac_qindex_delta == 0) && + (pic_param->chroma_dc_qindex_delta == 0)) { + /* lossless flag */ + /* nothing is needed */ + gen9_vp9_write_compressed_element(buffer, + 0, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 1, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 2, 128, 0); + } else { + if (vp9_state->tx_mode == TX_MODE_SELECT) { + gen9_vp9_write_compressed_element(buffer, + 0, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 1, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 2, 128, 1); + } else if (vp9_state->tx_mode == ALLOW_32X32) { + gen9_vp9_write_compressed_element(buffer, + 0, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 1, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 2, 128, 0); + } else { + unsigned int tx_mode; + + tx_mode = vp9_state->tx_mode; + gen9_vp9_write_compressed_element(buffer, + 0, 128, ((tx_mode) & 2)); + gen9_vp9_write_compressed_element(buffer, + 1, 128, ((tx_mode) & 1)); + gen9_vp9_write_compressed_element(buffer, + 2, 128, 0); + } + + if (vp9_state->tx_mode == TX_MODE_SELECT) { + + gen9_vp9_write_compressed_element(buffer, + 3, 128, 0); + + gen9_vp9_write_compressed_element(buffer, + 7, 128, 0); + + gen9_vp9_write_compressed_element(buffer, + 15, 128, 0); + } + } + /*Setup all the input&output object*/ + + { + /* update the coeff_update flag */ + gen9_vp9_write_compressed_element(buffer, + 27, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 820, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 1613, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 2406, 128, 0); + } + + + if (pic_param->pic_flags.bits.frame_type && !pic_param->pic_flags.bits.intra_only) + { + bool allow_comp = !( + (pic_param->ref_flags.bits.ref_last_sign_bias && pic_param->ref_flags.bits.ref_gf_sign_bias && pic_param->ref_flags.bits.ref_arf_sign_bias) || + (!pic_param->ref_flags.bits.ref_last_sign_bias && !pic_param->ref_flags.bits.ref_gf_sign_bias && !pic_param->ref_flags.bits.ref_arf_sign_bias) + ); + + if (allow_comp) + { + if (pic_param->pic_flags.bits.comp_prediction_mode == REFERENCE_MODE_SELECT) { + gen9_vp9_write_compressed_element(buffer, + 3271, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 3272, 128, 1); + } + else if (pic_param->pic_flags.bits.comp_prediction_mode == COMPOUND_REFERENCE) { + gen9_vp9_write_compressed_element(buffer, + 3271, 128, 1); + gen9_vp9_write_compressed_element(buffer, + 3272, 128, 0); + } + else { + + gen9_vp9_write_compressed_element(buffer, + 3271, 128, 0); + gen9_vp9_write_compressed_element(buffer, + 3272, 128, 0); + } + } + } + + i965_unmap_gpe_resource(&pak_context->res_compressed_input_buffer); +} + + +static void +gen9_pak_vp9_pipe_mode_select(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + struct gen9_hcpe_pipe_mode_select_param *pipe_mode_param) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + + BEGIN_BCS_BATCH(batch, 6); + + OUT_BCS_BATCH(batch, HCP_PIPE_MODE_SELECT | (6 - 2)); + OUT_BCS_BATCH(batch, + (pipe_mode_param->stream_out << 12) | + (pipe_mode_param->codec_mode << 5) | + (0 << 3) | /* disable Pic Status / Error Report */ + (pipe_mode_param->stream_out << 2) | + HCP_CODEC_SELECT_ENCODE); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, (1 << 6)); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_vp9_add_surface_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + hcp_surface_state *hcp_state) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + if (!hcp_state) + return; + + BEGIN_BCS_BATCH(batch, 3); + OUT_BCS_BATCH(batch, HCP_SURFACE_STATE | (3 - 2)); + OUT_BCS_BATCH(batch, + (hcp_state->dw1.surface_id << 28) | + (hcp_state->dw1.surface_pitch - 1) + ); + OUT_BCS_BATCH(batch, + (hcp_state->dw2.surface_format << 28) | + (hcp_state->dw2.y_cb_offset) + ); + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_pak_vp9_pipe_buf_addr_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct gen9_vp9_state *vp9_state; + unsigned int i; + struct object_surface *obj_surface; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!vp9_state || !vp9_state->pic_param) + return; + + + BEGIN_BCS_BATCH(batch, 104); + + OUT_BCS_BATCH(batch, HCP_PIPE_BUF_ADDR_STATE | (104 - 2)); + + obj_surface = encode_state->reconstructed_object; + + /* reconstructed obj_surface is already checked. So this is skipped */ + /* DW 1..3 decoded surface */ + OUT_RELOC64(batch, + obj_surface->bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 4..6 deblocking line */ + OUT_RELOC64(batch, + pak_context->res_deblocking_filter_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 7..9 deblocking tile line */ + OUT_RELOC64(batch, + pak_context->res_deblocking_filter_tile_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 10..12 deblocking tile col */ + OUT_RELOC64(batch, + pak_context->res_deblocking_filter_tile_col_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 13..15 metadata line */ + OUT_RELOC64(batch, + pak_context->res_metadata_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 16..18 metadata tile line */ + OUT_RELOC64(batch, + pak_context->res_metadata_tile_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 19..21 metadata tile col */ + OUT_RELOC64(batch, + pak_context->res_metadata_tile_col_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 22..30 SAO is not used for VP9 */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 31..33 Current Motion vector temporal buffer */ + OUT_RELOC64(batch, + pak_context->res_mv_temporal_buffer[vp9_state->curr_mv_temporal_index].bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 34..36 Not used */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* Only the first three reference_frame is used for VP9 */ + /* DW 37..52 for reference_frame */ + i = 0; + if (vp9_state->picture_coding_type) { + for (i = 0; i < 3; i++) { + + if (pak_context->reference_surfaces[i].bo) { + OUT_RELOC64(batch, + pak_context->reference_surfaces[i].bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, + 0); + } else { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + } + } + + for (; i < 8; i++) { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + + OUT_BCS_BATCH(batch, 0); + + /* DW 54..56 for source input */ + OUT_RELOC64(batch, + pak_context->uncompressed_picture_source.bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 57..59 StreamOut is not used */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 60..62. Not used for encoder */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 63..65. ILDB Not used for encoder */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 66..81 For the collocated motion vector temporal buffer */ + if (vp9_state->picture_coding_type) { + int prev_index = vp9_state->curr_mv_temporal_index ^ 0x01; + OUT_RELOC64(batch, + pak_context->res_mv_temporal_buffer[prev_index].bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, + 0); + } else { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + + for (i = 1; i < 8; i++) { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + OUT_BCS_BATCH(batch, 0); + + /* DW 83..85 VP9 prob buffer */ + OUT_RELOC64(batch, + pak_context->res_prob_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + + OUT_BCS_BATCH(batch, 0); + + /* DW 86..88 Segment id buffer */ + if (pak_context->res_segmentid_buffer.bo) { + OUT_RELOC64(batch, + pak_context->res_segmentid_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + } else { + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + } + OUT_BCS_BATCH(batch, 0); + + /* DW 89..91 HVD line rowstore buffer */ + OUT_RELOC64(batch, + pak_context->res_hvd_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 92..94 HVD tile line rowstore buffer */ + OUT_RELOC64(batch, + pak_context->res_hvd_tile_line_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 95..97 SAO streamout. Not used for VP9 */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* reserved for KBL. 98..100 */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* 101..103 */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_pak_vp9_ind_obj_base_addr_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + /* to do */ + BEGIN_BCS_BATCH(batch, 29); + + OUT_BCS_BATCH(batch, HCP_IND_OBJ_BASE_ADDR_STATE | (29 - 2)); + + /* indirect bitstream object base */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + /* the upper bound of indirect bitstream object */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 6: Indirect CU object base address */ + OUT_RELOC64(batch, + pak_context->res_mb_code_surface.bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, /* No write domain */ + vp9_state->mb_data_offset); + /* default attribute */ + OUT_BCS_BATCH(batch, 0); + + /* DW 9..11, PAK-BSE */ + OUT_RELOC64(batch, + pak_context->indirect_pak_bse_object.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + pak_context->indirect_pak_bse_object.offset); + OUT_BCS_BATCH(batch, 0); + + /* DW 12..13 upper bound */ + OUT_RELOC64(batch, + pak_context->indirect_pak_bse_object.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + pak_context->indirect_pak_bse_object.end_offset); + + /* DW 14..16 compressed header buffer */ + OUT_RELOC64(batch, + pak_context->res_compressed_input_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 17..19 prob counter streamout */ + OUT_RELOC64(batch, + pak_context->res_prob_counter_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 20..22 prob delta streamin */ + OUT_RELOC64(batch, + pak_context->res_prob_delta_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 23..25 Tile record streamout */ + OUT_RELOC64(batch, + pak_context->res_tile_record_streamout_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 26..28 CU record streamout */ + OUT_RELOC64(batch, + pak_context->res_cu_stat_streamout_buffer.bo, + I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION, + 0); + OUT_BCS_BATCH(batch, 0); + + ADVANCE_BCS_BATCH(batch); +} + +static void +gen9_pak_vp9_segment_state(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context, + VAEncSegParamVP9 *seg_param, uint8_t seg_id) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + uint32_t batch_value, tmp; + VAEncPictureParameterBufferVP9 *pic_param; + + if (!encode_state->pic_param_ext || + !encode_state->pic_param_ext->buffer) { + return; + } + + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; + + batch_value = seg_param->seg_flags.bits.segment_reference; + if (pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME || + pic_param->pic_flags.bits.intra_only) + batch_value = 0; + + BEGIN_BCS_BATCH(batch, 8); + + OUT_BCS_BATCH(batch, HCP_VP9_SEGMENT_STATE | (8 - 2)); + OUT_BCS_BATCH(batch, seg_id << 0); /* DW 1 - SegmentID */ + OUT_BCS_BATCH(batch, + (seg_param->seg_flags.bits.segment_reference_enabled << 3) | + (batch_value << 1) | + (seg_param->seg_flags.bits.segment_reference_skipped <<0) + ); + + /* DW 3..6 is not used for encoder */ + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + OUT_BCS_BATCH(batch, 0); + + /* DW 7 Mode */ + tmp = intel_convert_sign_mag(seg_param->segment_qindex_delta, 9); + batch_value = tmp; + tmp = intel_convert_sign_mag(seg_param->segment_lf_level_delta, 7); + batch_value |= (tmp << 16); + OUT_BCS_BATCH(batch, batch_value); + + ADVANCE_BCS_BATCH(batch); + +} + +static void +intel_vp9enc_construct_pak_insertobj_batchbuffer(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_gpe_resource *obj_batch_buffer) +{ + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct gen9_vp9_state *vp9_state; + int uncompressed_header_length; + unsigned int *cmd_ptr; + unsigned int dw_length, bits_in_last_dw; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!pak_context || !vp9_state || !vp9_state->pic_param) + return; + + uncompressed_header_length = vp9_state->header_length; + cmd_ptr = i965_map_gpe_resource(obj_batch_buffer); + + if (!cmd_ptr) + return; + + bits_in_last_dw = uncompressed_header_length % 4; + bits_in_last_dw *= 8; + + if (bits_in_last_dw == 0) + bits_in_last_dw = 32; + + /* get the DWORD length of the inserted_data */ + dw_length = ALIGN(uncompressed_header_length, 4) / 4; + *cmd_ptr++ = HCP_INSERT_PAK_OBJECT | dw_length; + + *cmd_ptr++ = ((0 << 31) | /* indirect payload */ + (0 << 16) | /* the start offset in first DW */ + (0 << 15) | + (bits_in_last_dw << 8) | /* bits_in_last_dw */ + (0 << 4) | /* skip emulation byte count. 0 for VP9 */ + (0 << 3) | /* emulation flag. 0 for VP9 */ + (1 << 2) | /* last header flag. */ + (0 << 1)); + memcpy(cmd_ptr, vp9_state->alias_insert_data, dw_length * sizeof(unsigned int)); + + cmd_ptr += dw_length; + + *cmd_ptr++ = MI_NOOP; + *cmd_ptr++ = MI_BATCH_BUFFER_END; + i965_unmap_gpe_resource(obj_batch_buffer); +} + +static void +gen9_vp9_pak_picture_level(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct object_surface *obj_surface; + VAEncPictureParameterBufferVP9 *pic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param, tmp_seg_param; + struct gen9_vp9_state *vp9_state; + struct gen9_surface_vp9 *vp9_priv_surface; + int i; + struct gen9_hcpe_pipe_mode_select_param mode_param; + hcp_surface_state hcp_surface; + struct gpe_mi_batch_buffer_start_parameter second_level_batch; + int segment_count; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!pak_context || !vp9_state || !vp9_state->pic_param) + return; + + pic_param = vp9_state->pic_param; + seg_param = vp9_state->segment_param; + + if (vp9_state->curr_pak_pass == 0) + { + intel_vp9enc_construct_pak_insertobj_batchbuffer(ctx, encoder_context, + &pak_context->res_pak_uncompressed_input_buffer); + + // Check if driver already programmed pic state as part of BRC update kernel programming. + if (!vp9_state->brc_enabled) + { + intel_vp9enc_construct_picstate_batchbuf(ctx, encode_state, + encoder_context, &pak_context->res_pic_state_brc_write_hfw_read_buffer); + } + } + + if (vp9_state->curr_pak_pass == 0) + { + intel_vp9enc_refresh_frame_internal_buffers(ctx, encoder_context); + } + + { + /* copy the frame_context[frame_idx] into curr_frame_context */ + memcpy(&vp9_state->vp9_current_fc, + &(vp9_state->vp9_frame_ctx[vp9_state->frame_ctx_idx]), + sizeof(FRAME_CONTEXT)); + { + uint8_t *prob_ptr; + + prob_ptr = i965_map_gpe_resource(&pak_context->res_prob_buffer); + + if (!prob_ptr) + return; + + /* copy the current fc to vp9_prob buffer */ + memcpy(prob_ptr, &vp9_state->vp9_current_fc, sizeof(FRAME_CONTEXT)); + if ((pic_param->pic_flags.bits.frame_type == HCP_VP9_KEY_FRAME) || + pic_param->pic_flags.bits.intra_only) { + FRAME_CONTEXT *frame_ptr = (FRAME_CONTEXT *)prob_ptr; + + memcpy(frame_ptr->partition_prob, vp9_kf_partition_probs, + sizeof(vp9_kf_partition_probs)); + memcpy(frame_ptr->uv_mode_prob, vp9_kf_uv_mode_prob, + sizeof(vp9_kf_uv_mode_prob)); + } + i965_unmap_gpe_resource(&pak_context->res_prob_buffer); + } + } + + if (vp9_state->brc_enabled && vp9_state->curr_pak_pass) { + /* read image status and insert the conditional end cmd */ + /* image ctrl/status is already accessed */ + struct gpe_mi_conditional_batch_buffer_end_parameter mi_cond_end; + struct vp9_encode_status_buffer_internal *status_buffer; + + status_buffer = &vp9_state->status_buffer; + memset(&mi_cond_end, 0, sizeof(mi_cond_end)); + mi_cond_end.offset = status_buffer->image_status_mask_offset; + mi_cond_end.bo = status_buffer->bo; + mi_cond_end.compare_data = 0; + mi_cond_end.compare_mask_mode_disabled = 1; + gen9_gpe_mi_conditional_batch_buffer_end(ctx, batch, + &mi_cond_end); + } + + mode_param.codec_mode = 1; + mode_param.stream_out = 0; + gen9_pak_vp9_pipe_mode_select(ctx, encode_state, encoder_context, &mode_param); + + /* reconstructed surface */ + memset(&hcp_surface, 0, sizeof(hcp_surface)); + obj_surface = encode_state->reconstructed_object; + hcp_surface.dw1.surface_id = 0; + hcp_surface.dw1.surface_pitch = obj_surface->width; + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, + &hcp_surface); + + /* Input surface */ + if (vp9_state->dys_in_use && + ((pic_param->frame_width_src != pic_param->frame_width_dst) || + (pic_param->frame_height_src != pic_param->frame_height_dst))) { + vp9_priv_surface = (struct gen9_surface_vp9 *)(obj_surface->private_data); + obj_surface = vp9_priv_surface->dys_surface_obj; + } else { + obj_surface = encode_state->input_yuv_object; + } + + hcp_surface.dw1.surface_id = 1; + hcp_surface.dw1.surface_pitch = obj_surface->width; + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, + &hcp_surface); + + if (vp9_state->picture_coding_type) { + /* Add surface for last */ + if (vp9_state->last_ref_obj) { + obj_surface = vp9_state->last_ref_obj; + hcp_surface.dw1.surface_id = 2; + hcp_surface.dw1.surface_pitch = obj_surface->width; + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, + &hcp_surface); + } + if (vp9_state->golden_ref_obj) { + obj_surface = vp9_state->golden_ref_obj; + hcp_surface.dw1.surface_id = 3; + hcp_surface.dw1.surface_pitch = obj_surface->width; + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, + &hcp_surface); + } + if (vp9_state->alt_ref_obj) { + obj_surface = vp9_state->alt_ref_obj; + hcp_surface.dw1.surface_id = 4; + hcp_surface.dw1.surface_pitch = obj_surface->width; + hcp_surface.dw2.surface_format = SURFACE_FORMAT_PLANAR_420_8; + hcp_surface.dw2.y_cb_offset = obj_surface->y_cb_offset; + gen9_vp9_add_surface_state(ctx, encode_state, encoder_context, + &hcp_surface); + } + } + + gen9_pak_vp9_pipe_buf_addr_state(ctx, encode_state, encoder_context); + + gen9_pak_vp9_ind_obj_base_addr_state(ctx, encode_state, encoder_context); + + // Using picstate zero with updated QP and LF deltas by HuC for repak, irrespective of how many Pak passes were run in multi-pass mode. + memset(&second_level_batch, 0, sizeof(second_level_batch)); + + if (vp9_state->curr_pak_pass == 0) { + second_level_batch.offset = 0; + } else + second_level_batch.offset = vp9_state->curr_pak_pass * VP9_PIC_STATE_BUFFER_SIZE; + + second_level_batch.is_second_level = 1; + second_level_batch.bo = pak_context->res_pic_state_brc_write_hfw_read_buffer.bo; + + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); + + if (pic_param->pic_flags.bits.segmentation_enabled && + seg_param) + segment_count = 8; + else { + segment_count = 1; + memset(&tmp_seg_param, 0, sizeof(tmp_seg_param)); + seg_param = &tmp_seg_param; + } + for (i = 0; i < segment_count; i++) + { + gen9_pak_vp9_segment_state(ctx, encode_state, + encoder_context, + &seg_param->seg_data[i], i); + } + + /* Insert the uncompressed header buffer */ + second_level_batch.is_second_level = 1; + second_level_batch.offset = 0; + second_level_batch.bo = pak_context->res_pak_uncompressed_input_buffer.bo; + + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); + + /* PAK_OBJECT */ + second_level_batch.is_second_level = 1; + second_level_batch.offset = 0; + second_level_batch.bo = pak_context->res_mb_code_surface.bo; + gen9_gpe_mi_batch_buffer_start(ctx, batch, &second_level_batch); + + return; +} + +static void +gen9_vp9_read_mfc_status(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct gpe_mi_store_register_mem_parameter mi_store_reg_mem_param; + struct gpe_mi_flush_dw_parameter mi_flush_dw_param; + //struct gpe_mi_copy_mem_parameter mi_copy_mem_param; + struct vp9_encode_status_buffer_internal *status_buffer; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + if (!vp9_state || !pak_context || !batch) + return; + + status_buffer = &(vp9_state->status_buffer); + + memset(&mi_flush_dw_param, 0, sizeof(mi_flush_dw_param)); + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param); + + memset(&mi_store_reg_mem_param, 0, sizeof(mi_store_reg_mem_param)); + mi_store_reg_mem_param.bo = status_buffer->bo; + mi_store_reg_mem_param.offset = status_buffer->bs_byte_count_offset; + mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); + + mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo; + mi_store_reg_mem_param.offset = 0; + mi_store_reg_mem_param.mmio_offset = status_buffer->vp9_bs_frame_reg_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); + + /* Read HCP Image status */ + mi_store_reg_mem_param.bo = status_buffer->bo; + mi_store_reg_mem_param.offset = status_buffer->image_status_mask_offset; + mi_store_reg_mem_param.mmio_offset = + status_buffer->vp9_image_mask_reg_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); + + mi_store_reg_mem_param.bo = status_buffer->bo; + mi_store_reg_mem_param.offset = status_buffer->image_status_ctrl_offset; + mi_store_reg_mem_param.mmio_offset = + status_buffer->vp9_image_ctrl_reg_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); + + mi_store_reg_mem_param.bo = pak_context->res_brc_bitstream_size_buffer.bo; + mi_store_reg_mem_param.offset = 4; + mi_store_reg_mem_param.mmio_offset = + status_buffer->vp9_image_ctrl_reg_offset; + gen9_gpe_mi_store_register_mem(ctx, batch, &mi_store_reg_mem_param); + + gen9_gpe_mi_flush_dw(ctx, batch, &mi_flush_dw_param); + + return; +} + +static VAStatus +gen9_vp9_pak_pipeline_prepare(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct object_surface *obj_surface; + struct object_buffer *obj_buffer; + struct i965_coded_buffer_segment *coded_buffer_segment; + VAEncPictureParameterBufferVP9 *pic_param; + struct gen9_vp9_state *vp9_state; + dri_bo *bo; + int i; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + if (!vp9_state || + !vp9_state->pic_param) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = vp9_state->pic_param; + + /* reconstructed surface */ + obj_surface = encode_state->reconstructed_object; + i965_check_alloc_surface_bo(ctx, obj_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + + pak_context->reconstructed_object.bo = obj_surface->bo; + dri_bo_reference(pak_context->reconstructed_object.bo); + + /* set vp9 reference frames */ + for (i = 0; i < ARRAY_ELEMS(pak_context->reference_surfaces); i++) { + if (pak_context->reference_surfaces[i].bo) + dri_bo_unreference(pak_context->reference_surfaces[i].bo); + pak_context->reference_surfaces[i].bo = NULL; + } + + /* Three reference frames are enough for VP9 */ + if (pic_param->pic_flags.bits.frame_type && + !pic_param->pic_flags.bits.intra_only) { + for (i = 0; i < 3; i++) { + obj_surface = encode_state->reference_objects[i]; + if (obj_surface && obj_surface->bo) { + pak_context->reference_surfaces[i].bo = obj_surface->bo; + dri_bo_reference(obj_surface->bo); + } + } + } + + /* input YUV surface */ + dri_bo_unreference(pak_context->uncompressed_picture_source.bo); + pak_context->uncompressed_picture_source.bo = NULL; + obj_surface = encode_state->reconstructed_object; + if (vp9_state->dys_in_use && + ((pic_param->frame_width_src != pic_param->frame_width_dst) || + (pic_param->frame_height_src != pic_param->frame_height_dst))) { + struct gen9_surface_vp9 *vp9_priv_surface = + (struct gen9_surface_vp9 *)(obj_surface->private_data); + obj_surface = vp9_priv_surface->dys_surface_obj; + } else + obj_surface = encode_state->input_yuv_object; + + pak_context->uncompressed_picture_source.bo = obj_surface->bo; + dri_bo_reference(pak_context->uncompressed_picture_source.bo); + + /* coded buffer */ + dri_bo_unreference(pak_context->indirect_pak_bse_object.bo); + pak_context->indirect_pak_bse_object.bo = NULL; + obj_buffer = encode_state->coded_buf_object; + bo = obj_buffer->buffer_store->bo; + pak_context->indirect_pak_bse_object.offset = I965_CODEDBUFFER_HEADER_SIZE; + pak_context->indirect_pak_bse_object.end_offset = ALIGN((obj_buffer->size_element - 0x1000), 0x1000); + pak_context->indirect_pak_bse_object.bo = bo; + dri_bo_reference(pak_context->indirect_pak_bse_object.bo); + + /* set the internal flag to 0 to indicate the coded size is unknown */ + dri_bo_map(bo, 1); + coded_buffer_segment = (struct i965_coded_buffer_segment *)bo->virtual; + coded_buffer_segment->mapped = 0; + coded_buffer_segment->codec = encoder_context->codec; + dri_bo_unmap(bo); + + return VA_STATUS_SUCCESS; +} + +static void +gen9_vp9_pak_brc_prepare(struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + struct gen9_vp9_state *vp9_state; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!vp9_state || !pak_context) + return; + + if (vp9_state->brc_enabled) { + /* check the buffer related with BRC */ + vp9_state->brc_flag_check = 0; + if (encode_state->seq_param_ext && encode_state->seq_param_ext->buffer) { + vp9_state->brc_flag_check |= VP9_BRC_SEQ; + } + + /* Frame_rate */ + if (encode_state->misc_param[VAEncMiscParameterTypeFrameRate] && + encode_state->misc_param[VAEncMiscParameterTypeFrameRate]->buffer) { + vp9_state->brc_flag_check |= VP9_BRC_FR; + } + + /* HRD */ + if (encode_state->misc_param[VAEncMiscParameterTypeRateControl] && + encode_state->misc_param[VAEncMiscParameterTypeRateControl]->buffer) { + vp9_state->brc_flag_check |= VP9_BRC_RC; + } + + if (encode_state->misc_param[VAEncMiscParameterTypeHRD] && + encode_state->misc_param[VAEncMiscParameterTypeHRD]->buffer) { + vp9_state->brc_flag_check |= VP9_BRC_HRD; + } + + /* + * If user-app doesn't pass the buffer related with BRC for the first + * frame, the error flag is returned. + */ + if (vp9_state->brc_flag_check == 0 && vp9_state->first_frame) { + vp9_state->brc_flag_check |= VP9_BRC_FAILURE; + } + } + return; +} + +static void +gen9_vp9_pak_context_destroy(void *context) +{ + struct gen9_encoder_context_vp9 *pak_context = context; + int i; + + dri_bo_unreference(pak_context->reconstructed_object.bo); + pak_context->reconstructed_object.bo = NULL; + + dri_bo_unreference(pak_context->uncompressed_picture_source.bo); + pak_context->uncompressed_picture_source.bo = NULL; + + dri_bo_unreference(pak_context->indirect_pak_bse_object.bo); + pak_context->indirect_pak_bse_object.bo = NULL; + + for (i = 0; i < 8; i++){ + dri_bo_unreference(pak_context->reference_surfaces[i].bo); + pak_context->reference_surfaces[i].bo = NULL; + } + + /* vme & pak same the same structure, so don't free the context here */ +} + +static VAStatus +gen9_vp9_pak_pipeline(VADriverContextP ctx, + VAProfile profile, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct intel_batchbuffer *batch = encoder_context->base.batch; + struct gen9_encoder_context_vp9 *pak_context = encoder_context->mfc_context; + VAStatus va_status; + struct gen9_vp9_state *vp9_state; + VAEncPictureParameterBufferVP9 *pic_param; + int i; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + + if (!vp9_state || !vp9_state->pic_param || !pak_context) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + va_status = gen9_vp9_pak_pipeline_prepare(ctx, encode_state, encoder_context); + + if (va_status != VA_STATUS_SUCCESS) + return va_status; + + if (i965->intel.has_bsd2) + intel_batchbuffer_start_atomic_bcs_override(batch, 0x1000, BSD_RING0); + else + intel_batchbuffer_start_atomic_bcs(batch, 0x1000); + + intel_batchbuffer_emit_mi_flush(batch); + + BEGIN_BCS_BATCH(batch, 64); + for (i = 0; i < 64; i++) + OUT_BCS_BATCH(batch, MI_NOOP); + + ADVANCE_BCS_BATCH(batch); + + for (vp9_state->curr_pak_pass = 0; + vp9_state->curr_pak_pass < vp9_state->num_pak_passes; + vp9_state->curr_pak_pass++) { + + if (vp9_state->curr_pak_pass == 0) { + /* Initialize the VP9 Image Ctrl reg for the first pass */ + struct gpe_mi_load_register_imm_parameter mi_load_reg_imm; + struct vp9_encode_status_buffer_internal *status_buffer; + + status_buffer = &(vp9_state->status_buffer); + memset(&mi_load_reg_imm, 0, sizeof(mi_load_reg_imm)); + mi_load_reg_imm.mmio_offset = status_buffer->vp9_image_ctrl_reg_offset; + mi_load_reg_imm.data = 0; + gen9_gpe_mi_load_register_imm(ctx, batch, &mi_load_reg_imm); + } + gen9_vp9_pak_picture_level(ctx, encode_state, encoder_context); + gen9_vp9_read_mfc_status(ctx, encoder_context); + } + + intel_batchbuffer_end_atomic(batch); + intel_batchbuffer_flush(batch); + + pic_param = vp9_state->pic_param; + vp9_state->vp9_last_frame.frame_width = pic_param->frame_width_dst; + vp9_state->vp9_last_frame.frame_height = pic_param->frame_height_dst; + vp9_state->vp9_last_frame.frame_type = pic_param->pic_flags.bits.frame_type; + vp9_state->vp9_last_frame.show_frame = pic_param->pic_flags.bits.show_frame; + vp9_state->vp9_last_frame.refresh_frame_context = pic_param->pic_flags.bits.refresh_frame_context; + vp9_state->vp9_last_frame.frame_context_idx = pic_param->pic_flags.bits.frame_context_idx; + vp9_state->vp9_last_frame.intra_only = pic_param->pic_flags.bits.intra_only; + vp9_state->frame_number++; + vp9_state->curr_mv_temporal_index ^= 1; + vp9_state->first_frame = 0; + + return VA_STATUS_SUCCESS; +} + +Bool +gen9_vp9_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + struct gen9_encoder_context_vp9 *vme_context = NULL; + struct gen9_vp9_state *vp9_state = NULL; + + vme_context = calloc(1, sizeof(struct gen9_encoder_context_vp9)); + vp9_state = calloc(1, sizeof(struct gen9_vp9_state)); + + if (!vme_context || !vp9_state) { + if (vme_context) + free(vme_context); + if (vp9_state) + free(vp9_state); + return false; + } + + encoder_context->enc_priv_state = vp9_state; + vme_context->enc_priv_state = vp9_state; + + /* Initialize the features that are supported by VP9 */ + vme_context->hme_supported = 1; + vme_context->use_hw_scoreboard = 1; + vme_context->use_hw_non_stalling_scoreboard = 1; + + vp9_state->tx_mode = TX_MODE_SELECT; + vp9_state->multi_ref_qp_check = 0; + vp9_state->target_usage = INTEL_ENC_VP9_TU_NORMAL; + vp9_state->num_pak_passes = 1; + vp9_state->hme_supported = vme_context->hme_supported; + vp9_state->b16xme_supported = 1; + + if (encoder_context->rate_control_mode != VA_RC_NONE && + encoder_context->rate_control_mode != VA_RC_CQP) { + vp9_state->brc_enabled = 1; + vp9_state->brc_distortion_buffer_supported = 1; + vp9_state->brc_constant_buffer_supported = 1; + vp9_state->num_pak_passes = 4; + } + vp9_state->dys_enabled = 1; /* this is supported by default */ + vp9_state->first_frame = 1; + + /* the definition of status buffer offset for VP9 */ + { + struct vp9_encode_status_buffer_internal *status_buffer; + + status_buffer = &vp9_state->status_buffer; + memset(status_buffer, 0, + sizeof(struct vp9_encode_status_buffer_internal)); + + status_buffer->bs_byte_count_offset = 2048; + status_buffer->image_status_mask_offset = 2052; + status_buffer->image_status_ctrl_offset = 2056; + status_buffer->media_index_offset = 2060; + + status_buffer->vp9_bs_frame_reg_offset = 0x1E9E0; + status_buffer->vp9_image_mask_reg_offset = 0x1E9F0; + status_buffer->vp9_image_ctrl_reg_offset = 0x1E9F4; + } + + gen9_vme_kernels_context_init_vp9(ctx, encoder_context, vme_context); + + encoder_context->vme_context = vme_context; + encoder_context->vme_pipeline = gen9_vme_pipeline_vp9; + encoder_context->vme_context_destroy = gen9_vme_context_destroy_vp9; + + return true; +} + +Bool +gen9_vp9_pak_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context) +{ + /* VME & PAK share the same context */ + struct gen9_encoder_context_vp9 *pak_context = encoder_context->vme_context; + + if (!pak_context) + return false; + + encoder_context->mfc_context = pak_context; + encoder_context->mfc_context_destroy = gen9_vp9_pak_context_destroy; + encoder_context->mfc_pipeline = gen9_vp9_pak_pipeline; + encoder_context->mfc_brc_prepare = gen9_vp9_pak_brc_prepare; + + return true; +} + +VAStatus +gen9_vp9_get_coded_status(VADriverContextP ctx, + char *buffer, + struct hw_context *hw_context) +{ + struct intel_encoder_context *encoder_context = + (struct intel_encoder_context *)hw_context; + struct gen9_vp9_state *vp9_state = NULL; + struct vp9_encode_status_buffer_internal *status_buffer; + struct i965_coded_buffer_segment *coded_buf_seg; + unsigned int *buf_ptr; + + if (!encoder_context || !buffer) + return VA_STATUS_ERROR_INVALID_BUFFER; + + vp9_state = (struct gen9_vp9_state *)(encoder_context->enc_priv_state); + coded_buf_seg = (struct i965_coded_buffer_segment *) buffer; + + if (!vp9_state) + return VA_STATUS_ERROR_INVALID_BUFFER; + + status_buffer = &vp9_state->status_buffer; + + buf_ptr = (unsigned int *)(buffer + status_buffer->bs_byte_count_offset); + coded_buf_seg->base.buf = buffer + I965_CODEDBUFFER_HEADER_SIZE; + coded_buf_seg->base.next = NULL; + + /* the stream size is writen into the bs_byte_count_offset address of buffer */ + coded_buf_seg->base.size = *buf_ptr; + + coded_buf_seg->mapped = 1; + + /* One VACodedBufferSegment for VP9 will be added later. + * It will be linked to the next element of coded_buf_seg->base.next + */ + + return VA_STATUS_SUCCESS; +} diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder.h intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder.h --- intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder.h 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder.h 2016-06-17 01:06:24.000000000 +0000 @@ -0,0 +1,1979 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWAR + * + * Authors: + * Zhao, Yakui + * + */ + +#ifndef GEN9_VP9_ENCODER_H +#define GEN9_VP9_ENCODER_H + +#include +#include +#include + +#include +#include "i965_gpe_utils.h" + +#include "vp9_probs.h" + +struct encode_state; +struct intel_encoder_context; + +#define KEY_FRAME 0 +#define INTER_FRAME 1 + +#define INTEL_BRC_NONE 0 +#define INTEL_BRC_CBR 1 +#define INTEL_BRC_VBR 2 +#define INTEL_BRC_CQP 3 + +typedef enum _VP9_MEDIA_STATE_TYPE +{ + VP9_MEDIA_STATE_ENC_I_FRAME_DIST = 0, + VP9_MEDIA_STATE_32X_SCALING , + VP9_MEDIA_STATE_16X_SCALING , + VP9_MEDIA_STATE_4X_SCALING , + VP9_MEDIA_STATE_32X_ME , + VP9_MEDIA_STATE_16X_ME , + VP9_MEDIA_STATE_4X_ME , + VP9_MEDIA_STATE_BRC_INIT_RESET , + VP9_MEDIA_STATE_BRC_UPDATE , + VP9_MEDIA_STATE_MBENC_I_32x32 , + VP9_MEDIA_STATE_MBENC_I_16x16 , + VP9_MEDIA_STATE_MBENC_P , + VP9_MEDIA_STATE_MBENC_TX , + VP9_MEDIA_STATE_DYS , + VP9_NUM_MEDIA_STATES +} VP9_MEDIA_STATE_TYPE; + + +enum vp9_walker_degree +{ + VP9_NO_DEGREE = 0, + VP9_26_DEGREE, + VP9_45Z_DEGREE +}; + +struct vp9_encoder_kernel_parameter +{ + unsigned int curbe_size; + unsigned int inline_data_size; + unsigned int sampler_size; +}; + +struct vp9_encoder_kernel_walker_parameter +{ + unsigned int walker_degree; + unsigned int use_scoreboard; + unsigned int scoreboard_mask; + unsigned int no_dependency; + unsigned int resolution_x; + unsigned int resolution_y; +}; + +struct vp9_encoder_scoreboard_parameter +{ + unsigned int mask; + unsigned int type; + unsigned int enable; + unsigned int walkpat_flag; +}; + +typedef enum _INTEL_VP9_ENC_OPERATION +{ + INTEL_VP9_ENC_SCALING4X = 0, + INTEL_VP9_ENC_SCALING2X, + INTEL_VP9_ENC_ME, + INTEL_VP9_ENC_BRC, + INTEL_VP9_ENC_MBENC, + INTEL_VP9_ENC_DYS +} INTEL_VP9_ENC_OPERATION; + +struct gen9_surface_vp9 +{ + VADriverContextP ctx; + VASurfaceID scaled_4x_surface_id; + struct object_surface *scaled_4x_surface_obj; + VASurfaceID scaled_16x_surface_id; + struct object_surface *scaled_16x_surface_obj; + + VASurfaceID dys_surface_id; + struct object_surface *dys_surface_obj; + VASurfaceID dys_4x_surface_id; + struct object_surface *dys_4x_surface_obj; + VASurfaceID dys_16x_surface_id; + struct object_surface *dys_16x_surface_obj; + int dys_frame_width; + int dys_frame_height; + int frame_width; + int frame_height; + unsigned int qp_value; + uint8_t dys_hme_flag; +}; + +/* The definition for Scaling */ +enum vp9_binding_table_offset_scaling +{ + VP9_BTI_SCALING_FRAME_SRC_Y = 0, + VP9_BTI_SCALING_FRAME_DST_Y = 1, + VP9_BTI_SCALING_FRAME_MBVPROCSTATS_DST_CM = 6, + VP9_BTI_SCALING_NUM_SURFACES = 8 +}; + + +typedef struct _vp9_scaling4x_curbe_data_cm +{ + struct + { + uint32_t input_picture_width :16; + uint32_t input_picture_height :16; + } dw0; + + struct { + uint32_t input_y_bti; + } dw1; + + struct { + uint32_t output_y_bti; + } dw2; + + struct { + uint32_t reserved; + } dw3; + + struct { + uint32_t reserved; + } dw4; + + struct { + uint32_t reserved; + } dw5; + + struct + { + uint32_t reserved0 : 1; + uint32_t enable_mb_variance_output : 1; + uint32_t enable_mb_pixel_average_output : 1; + uint32_t enable_blk8x8_stat_output : 1; + uint32_t reserved1 : 28; + } dw6; + + struct { + uint32_t reserved; + } dw7; + + struct { + uint32_t reserved; + } dw8; + + struct { + uint32_t reserved; + } dw9; + + struct { + uint32_t mbv_proc_stat_bti; + } dw10; + + struct { + uint32_t reserved; + } dw11; +} vp9_scaling4x_curbe_data_cm; + +typedef struct _vp9_scaling2x_curbe_data_cm +{ + struct + { + uint32_t input_picture_width :16; + uint32_t input_picture_height :16; + } dw0; + + /* dw1-dw7 */ + uint32_t reserved1[7]; + + struct { + uint32_t input_y_bti; + } dw8; + + struct { + uint32_t output_y_bti; + } dw9; + + uint32_t reserved2[2]; +} vp9_scaling2x_curbe_data_cm; + +typedef struct _vp9_scaling4x_inline_data_cm +{ + struct + { + uint32_t dstblk_hori_origin : 16; + uint32_t dstblk_vert_origin : 16; + } dw0; + + struct + { + uint32_t horiblk_compmask_layer0 : 16; + uint32_t vertblk_compmask_layer0 : 16; + } dw1; + + struct + { + uint32_t horiblk_compmask_layer1 : 16; + uint32_t vertblk_compmask_layer1 : 16; + } dw2; + + struct + { + uint32_t horiblk_compmask_layer2 : 16; + uint32_t vertblk_compmask_layer2 : 16; + } dw3; + + struct + { + float video_xscaling_step; + } dw4; + + struct + { + float video_step_delta; + } dw5; + + + struct + { + uint32_t vert_blk_num :17; + uint32_t area_interest :1; + uint32_t reserved :14; + } dw6; + + struct + { + uint32_t grp_id_num; + } dw7; + + struct + { + uint32_t horiblk_compmask_layer3 : 16; + uint32_t vertblk_compmask_layer3 : 16; + } dw8; + + struct + { + uint32_t horiblk_compmask_layer4 : 16; + uint32_t vertblk_compmask_layer4 : 16; + } dw9; + + struct + { + uint32_t horiblk_compmask_layer5 : 16; + uint32_t vertblk_compmask_layer5 : 16; + } dw10; + + struct + { + uint32_t horiblk_compmask_layer6 : 16; + uint32_t vertblk_compmask_layer6 : 16; + } dw11; + + struct + { + uint32_t horiblk_compmask_layer7 : 16; + uint32_t vertblk_compmask_layer7 : 16; + } dw12; + + struct { + uint32_t reserved; + } dw13; + + struct { + uint32_t reserved; + } dw14; + + struct { + uint32_t reserved; + } dw15; +} vp9_scaling4x_inline_data_cm; + +#define VP9_SCALING_4X 0 +#define VP9_SCALING_2X 1 +#define NUM_VP9_SCALING 2 + +typedef struct _vp9_bti_scaling_offset +{ + uint32_t scaling_frame_src_y; + uint32_t scaling_frame_dst_y; + uint32_t reserved; + uint32_t scaling_frame_mbv_proc_stat_dst; +} vp9_bti_scaling_offset; + +struct vp9_scaling_context +{ + struct i965_gpe_context gpe_contexts[NUM_VP9_SCALING]; + vp9_bti_scaling_offset scaling_4x_bti; + vp9_bti_scaling_offset scaling_2x_bti; +}; + +struct gen9_search_path_delta +{ + char search_path_delta_x:4; + char search_path_delta_y:4; +}; + +struct vp9_binding_table_me +{ + uint32_t memv_data_surface_offset; + uint32_t memv16x_data_surface_offset; + uint32_t me_dist_offset; + uint32_t me_brc_dist_offset; + uint32_t me_curr_picl0_offset; + uint32_t me_curr_picl1_offset; +}; + +enum vp9_binding_table_offset_me +{ + VP9_BTI_ME_MV_DATA_SURFACE = 0, + VP9_BTI_16XME_MV_DATA_SURFACE = 1, + VP9_BTI_ME_DISTORTION_SURFACE = 2, + VP9_BTI_ME_BRC_DISTORTION_SURFACE = 3, + VP9_BTI_ME_CURR_PIC_L0 = 4, + VP9_BTI_ME_CURR_PIC_L1 = VP9_BTI_ME_CURR_PIC_L0 + 17, + VP9_BTI_ME_NUM_SURFACES = VP9_BTI_ME_CURR_PIC_L1 + 5 +}; + +enum VP9_ENC_ME_MODES +{ + VP9_ENC_ME16X_BEFORE_ME4X = 0, + VP9_ENC_ME16X_ONLY = 1, + VP9_ENC_ME4X_ONLY = 2, + VP9_ENC_ME4X_AFTER_ME16X = 3 +}; + +typedef struct _vp9_me_curbe_data +{ + struct + { + uint32_t skip_mode_enable:1; + uint32_t adaptive_enable:1; + uint32_t bi_mix_dis:1; + uint32_t reserved0:2; + uint32_t early_ime_success_enable:1; + uint32_t reserved1:1; + uint32_t t8x8_flag_for_inter_enable:1; + uint32_t reserved2:16; + uint32_t early_ime_stop:8; + } dw0; + + struct { + uint32_t max_num_mvs:6; + uint32_t reserved0:10; + uint32_t bi_weight:6; + uint32_t reserved1:6; + uint32_t uni_mix_disable:1; + uint32_t reserved2:3; + } dw1; + + struct { + uint32_t max_len_sp:8; + uint32_t max_num_su:8; + uint32_t reserved0:16; + } dw2; + + struct { + uint32_t src_size:2; + uint32_t reserved0:2; + uint32_t mb_type_remap:2; + uint32_t src_Access:1; + uint32_t ref_access:1; + uint32_t search_ctrl:3; + uint32_t dual_search_path_option:1; + uint32_t sub_pel_mode:2; + uint32_t skip_type:1; + uint32_t disable_field_cache_allocation:1; + uint32_t inter_chroma_mode:1; + uint32_t ft_enable:1; + uint32_t bme_disable_fbr:1; + uint32_t block_based_skip_enable:1; + uint32_t inter_sad:2; + uint32_t intra_sad:2; + uint32_t sub_mb_part_mask:7; + uint32_t reserved1:1; + } dw3; + + struct { + uint32_t reserved0:8; + uint32_t picture_height_minus1:8; + uint32_t picture_width:8; + uint32_t reserved1:8; + } dw4; + + struct { + uint32_t reserved0:8; + uint32_t qp_prime_y:8; + uint32_t ref_width:8; + uint32_t ref_height:8; + } dw5; + + struct { + uint32_t reserved0:3; + uint32_t write_distortions:1; + uint32_t use_mv_from_prev_step:1; + uint32_t reserved1:3; + uint32_t super_combine_dist:8; + uint32_t max_vmvr:16; + } dw6; + + struct { + uint32_t reserved0:16; + uint32_t mv_cost_scale_factor:2; + uint32_t bilinear_enable:1; + uint32_t src_field_polarity:1; + uint32_t weightedsad_harr:1; + uint32_t ac_only_haar:1; + uint32_t ref_id_cost_mode:1; + uint32_t reserved1:1; + uint32_t skip_center_mask:8; + } dw7; + + struct { + uint32_t mode_0_cost:8; + uint32_t mode_1_cost:8; + uint32_t mode_2_cost:8; + uint32_t mode_3_cost:8; + } dw8; + + struct { + uint32_t mode_4_cost:8; + uint32_t mode_5_cost:8; + uint32_t mode_6_cost:8; + uint32_t mode_7_cost:8; + } dw9; + + struct { + uint32_t mode_8_cost:8; + uint32_t mode_9_cost:8; + uint32_t ref_id_cost:8; + uint32_t chroma_intra_mode_cost:8; + } dw10; + + struct { + uint32_t mv_0_cost:8; + uint32_t mv_1_cost:8; + uint32_t mv_2_cost:8; + uint32_t mv_3_cost:8; + } dw11; + + struct { + uint32_t mv_4_cost:8; + uint32_t mv_5_cost:8; + uint32_t mv_6_cost:8; + uint32_t mv_7_cost:8; + } dw12; + + struct { + uint32_t num_ref_idx_l0_minus1:8; + uint32_t num_ref_idx_l1_minus1:8; + uint32_t actual_mb_width:8; + uint32_t actual_mb_height:8; + } dw13; + + struct { + uint32_t l0_ref_pic_polarity_bits:8; + uint32_t l1_ref_pic_polarity_bits:2; + uint32_t reserved:22; + } dw14; + + struct { + uint32_t prev_mv_read_pos_factor : 8; + uint32_t mv_shift_factor : 8; + uint32_t reserved:16; + } dw15; + + struct { + struct gen9_search_path_delta sp_delta_0; + struct gen9_search_path_delta sp_delta_1; + struct gen9_search_path_delta sp_delta_2; + struct gen9_search_path_delta sp_delta_3; + } dw16; + + struct { + struct gen9_search_path_delta sp_delta_4; + struct gen9_search_path_delta sp_delta_5; + struct gen9_search_path_delta sp_delta_6; + struct gen9_search_path_delta sp_delta_7; + } dw17; + + struct { + struct gen9_search_path_delta sp_delta_8; + struct gen9_search_path_delta sp_delta_9; + struct gen9_search_path_delta sp_delta_10; + struct gen9_search_path_delta sp_delta_11; + } dw18; + + struct { + struct gen9_search_path_delta sp_delta_12; + struct gen9_search_path_delta sp_delta_13; + struct gen9_search_path_delta sp_delta_14; + struct gen9_search_path_delta sp_delta_15; + } dw19; + + struct { + struct gen9_search_path_delta sp_delta_16; + struct gen9_search_path_delta sp_delta_17; + struct gen9_search_path_delta sp_delta_18; + struct gen9_search_path_delta sp_delta_19; + } dw20; + + struct { + struct gen9_search_path_delta sp_delta_20; + struct gen9_search_path_delta sp_delta_21; + struct gen9_search_path_delta sp_delta_22; + struct gen9_search_path_delta sp_delta_23; + } dw21; + + struct { + struct gen9_search_path_delta sp_delta_24; + struct gen9_search_path_delta sp_delta_25; + struct gen9_search_path_delta sp_delta_26; + struct gen9_search_path_delta sp_delta_27; + } dw22; + + struct { + struct gen9_search_path_delta sp_delta_28; + struct gen9_search_path_delta sp_delta_29; + struct gen9_search_path_delta sp_delta_30; + struct gen9_search_path_delta sp_delta_31; + } dw23; + + struct { + struct gen9_search_path_delta sp_delta_32; + struct gen9_search_path_delta sp_delta_33; + struct gen9_search_path_delta sp_delta_34; + struct gen9_search_path_delta sp_delta_35; + } dw24; + + struct { + struct gen9_search_path_delta sp_delta_36; + struct gen9_search_path_delta sp_delta_37; + struct gen9_search_path_delta sp_delta_38; + struct gen9_search_path_delta sp_delta_39; + } dw25; + + struct { + struct gen9_search_path_delta sp_delta_40; + struct gen9_search_path_delta sp_delta_41; + struct gen9_search_path_delta sp_delta_42; + struct gen9_search_path_delta sp_delta_43; + } dw26; + + struct { + struct gen9_search_path_delta sp_delta_44; + struct gen9_search_path_delta sp_delta_45; + struct gen9_search_path_delta sp_delta_46; + struct gen9_search_path_delta sp_delta_47; + } dw27; + + struct { + struct gen9_search_path_delta sp_delta_48; + struct gen9_search_path_delta sp_delta_49; + struct gen9_search_path_delta sp_delta_50; + struct gen9_search_path_delta sp_delta_51; + } dw28; + + struct { + struct gen9_search_path_delta sp_delta_52; + struct gen9_search_path_delta sp_delta_53; + struct gen9_search_path_delta sp_delta_54; + struct gen9_search_path_delta sp_delta_55; + } dw29; + + struct { + uint32_t reserved0; + } dw30; + + struct { + uint32_t reserved0; + } dw31; + + struct { + uint32_t _4x_memv_output_data_surf_index; + } dw32; + + struct { + uint32_t _16x_32x_memv_input_data_surf_index; + } dw33; + + struct { + uint32_t _4x_me_output_dist_surf_index; + } dw34; + + struct { + uint32_t _4x_me_output_brc_dist_surf_index; + } dw35; + + struct { + uint32_t vme_fwd_inter_pred_surf_index; + } dw36; + + struct { + uint32_t vme_bdw_inter_pred_surf_index; + } dw37; + + /* reserved */ + struct { + uint32_t reserved; + } dw38; +} vp9_me_curbe_data; + +struct vp9_me_context +{ + struct i965_gpe_context gpe_context; + struct vp9_binding_table_me vp9_me_bti; +}; + + +enum vp9_binding_table_offset_mbenc +{ + VP9_BTI_MBENC_CURR_Y_G9 = 0, + VP9_BTI_MBENC_CURR_UV_G9 = 1, + VP9_BTI_MBENC_CURR_NV12_G9 = 2, + VP9_BTI_MBENC_LAST_NV12_G9 = 3, + VP9_BTI_MBENC_GOLD_NV12_G9 = 5, + VP9_BTI_MBENC_ALTREF_NV12_G9 = 7, + VP9_BTI_MBENC_SEGMENTATION_MAP_G9 = 8, + VP9_BTI_MBENC_TX_CURBE_G9 = 9, + VP9_BTI_MBENC_HME_MV_DATA_G9 = 10, + VP9_BTI_MBENC_HME_DISTORTION_G9 = 11, + VP9_BTI_MBENC_MODE_DECISION_PREV_G9 = 12, + VP9_BTI_MBENC_MODE_DECISION_G9 = 13, + VP9_BTI_MBENC_OUT_16x16_INTER_MODES_G9 = 14, + VP9_BTI_MBENC_CU_RECORDS_G9 = 15, + VP9_BTI_MBENC_PAK_DATA_G9 = 16, + VP9_BTI_MBENC_NUM_SURFACES_G9 = 17, +}; + +struct vp9_binding_table_mbenc_i32 +{ + uint32_t mbenc_curr_y; + uint32_t mbenc_curr_uv; + uint32_t mbenc_segmentation_map; + uint32_t mbenc_mode_decision; +}; + +struct vp9_binding_table_mbenc_i16 +{ + uint32_t mbenc_curr_y; + uint32_t mbenc_curr_uv; + uint32_t mbenc_curr_nv12; + uint32_t mbenc_segmentation_map; + uint32_t mbenc_tx_curbe; + uint32_t mbenc_mode_decision; +}; + +struct vp9_binding_table_mbenc_p +{ + uint32_t mbenc_curr_y; + uint32_t mbenc_curr_uv; + uint32_t mbenc_curr_nv12; + uint32_t mbenc_lastref_pic; + uint32_t mbenc_goldref_pic; + uint32_t mbenc_altref_pic; + uint32_t mbenc_hme_mvdata; + uint32_t mbenc_hme_distortion; + uint32_t mbenc_segmentation_map; + uint32_t mbenc_tx_curbe; + uint32_t mbenc_mode_decision_prev; + uint32_t mbenc_mode_decision; + uint32_t mbenc_output_intermodes16x16; +}; + +struct vp9_binding_table_mbenc_tx +{ + uint32_t mbenc_curr_y; + uint32_t mbenc_curr_uv; + uint32_t mbenc_segmentation_map; + uint32_t mbenc_mode_decision; + uint32_t mbenc_cu_records; + uint32_t mbenc_pak_data; +}; + +typedef struct _vp9_mbenc_curbe_data +{ + struct { + uint32_t frame_width:16; + uint32_t frame_height:16; + } dw0; + + struct { + uint32_t frame_type : 8; + uint32_t segmentation_enable : 8; + uint32_t ref_frame_flags : 8; + uint32_t min_16for32_check : 8; + } dw1; + + struct { + uint32_t multi_pred : 8; + uint32_t len_sp : 8; + uint32_t search_x : 8; + uint32_t search_y : 8; + } dw2; + + struct { + uint32_t hme_enabled : 8; + uint32_t multi_ref_qp_check : 8; + uint32_t disable_temp_pred : 8; + uint32_t min_ref_for32_check : 8; + } dw3; + + struct { + uint32_t skip16_threshold : 16; + uint32_t disable_mr_threshold : 16; + } dw4; + + struct { + uint32_t enable_mbrc : 8; + uint32_t inter_round : 8; + uint32_t intra_round : 8; + uint32_t frame_qpindex : 8; + } dw5; + + struct { + uint32_t reserved; + } dw6; + + struct { + uint32_t reserved; + } dw7; + + struct { + uint32_t last_ref_qp : 16; + uint32_t golden_ref_qp : 16; + } dw8; + + struct { + uint32_t alt_ref_qp : 16; + uint32_t reserved : 16; + } dw9; + + struct { + uint32_t sum_intra_dist; + } dw10; + + struct { + uint32_t sum_inter_dist; + } dw11; + + struct { + uint32_t num_intra; + } dw12; + + struct { + uint32_t num_lastref; + } dw13; + + struct { + uint32_t num_goldref; + } dw14; + + struct { + uint32_t num_altref; + } dw15; + + struct { + uint32_t ime_search_path_delta03; + } dw16; + + struct { + uint32_t ime_search_path_delta47; + } dw17; + + struct { + uint32_t ime_search_path_delta811; + } dw18; + + struct { + uint32_t ime_search_path_delta1215; + } dw19; + + struct { + uint32_t ime_search_path_delta1619; + } dw20; + + struct { + uint32_t ime_search_path_delta2023; + } dw21; + + struct { + uint32_t ime_search_path_delta2427; + } dw22; + + struct { + uint32_t ime_search_path_delta2831; + } dw23; + + struct { + uint32_t ime_search_path_delta3235; + } dw24; + + struct { + uint32_t ime_search_path_delta3639; + } dw25; + + struct { + uint32_t ime_search_path_delta4043; + } dw26; + + struct { + uint32_t ime_search_path_delta4447; + } dw27; + + struct { + uint32_t ime_search_path_delta4851; + } dw28; + + struct { + uint32_t ime_search_path_delta5255; + } dw29; + + struct { + uint32_t reserved; + } dw30; + + struct { + uint32_t reserved; + } dw31; + + /* DW 32 */ + struct { + struct { + uint32_t segment_qpindex : 8; + uint32_t intra_non_dcpenalty_16x16 : 8; + uint32_t intra_non_dcpenalty_8x8 : 8; + uint32_t intra_non_dcpenalty_4x4 : 8; + } dw32; + + struct { + uint32_t intra_non_dcpenalty_32x32 : 16; + uint32_t reserved : 16; + } dw33; + + + struct { + uint32_t zero_cost : 16; + uint32_t near_cost : 16; + } dw34; + + struct { + uint32_t nearest_cost : 16; + uint32_t refid_cost : 16; + } dw35; + + struct { + uint32_t mv_cost0 : 16; + uint32_t mv_cost1 : 16; + } dw36; + + struct { + uint32_t mv_cost2 : 16; + uint32_t mv_cost3 : 16; + } dw37; + + struct { + uint32_t mv_cost4 : 16; + uint32_t mv_cost5 : 16; + } dw38; + + struct { + uint32_t mv_cost6 : 16; + uint32_t mv_cost7 : 16; + } dw39; + + struct { + uint32_t mv_cost0 : 8; + uint32_t mv_cost1 : 8; + uint32_t mv_cost2 : 8; + uint32_t mv_cost3 : 8; + } dw40; + + struct { + uint32_t mv_cost4 : 8; + uint32_t mv_cost5 : 8; + uint32_t mv_cost6 : 8; + uint32_t mv_cost7 : 8; + } dw41; + + struct { + uint32_t mode_cost0 : 8; + uint32_t mode_cost1 : 8; + uint32_t mode_cost2 : 8; + uint32_t mode_cost3 : 8; + } dw42; + + struct { + uint32_t mode_cost4 : 8; + uint32_t mode_cost5 : 8; + uint32_t mode_cost6 : 8; + uint32_t mode_cost7 : 8; + } dw43; + + struct { + uint32_t mode_cost8 : 8; + uint32_t mode_cost9 : 8; + uint32_t refid_cost : 8; + uint32_t reserved : 8; + } dw44; + + struct { + uint32_t mode_cost_intra32x32 : 16; + uint32_t mode_cost_inter32x32 : 16; + } dw45; + + struct { + uint32_t mode_cost_intra32x16 : 16; + uint32_t reserved : 16; + } dw46; + + struct { + uint32_t lambda_intra : 16; + uint32_t lambda_inter : 16; + } dw47; + } segments[8]; + + /* + Segment 0: dw32 - dw47 + Segment 1 : dw48 - dw63 + Segment 2 : dw64 - dw79 + Segment 3 : dw80 - dw95 + Segment 4 : dw96 - dw111 + Segment 5 : dw112 - dw127 + Segment 6 : dw128 - dw143 + Segment 7 : dw144 - dw159 + */ + + // dw160 + struct { + uint32_t enc_curr_y_surf_bti; + } dw160; + + struct { + uint32_t reserved; + } dw161; + + struct { + uint32_t enc_curr_nv12_surf_bti; + } dw162; + + struct { + uint32_t reserved; + } dw163; + + struct { + uint32_t reserved; + } dw164; + + struct { + uint32_t reserved; + } dw165; + + struct { + uint32_t segmentation_map_bti; + } dw166; + + struct { + uint32_t tx_curbe_bti; + } dw167; + + struct { + uint32_t hme_mvdata_bti; + } dw168; + + struct { + uint32_t hme_distortion_bti; + } dw169; + + struct { + uint32_t reserved; + } dw170; + + struct { + uint32_t mode_decision_prev_bti; + } dw171; + + struct { + uint32_t mode_decision_bti; + } dw172; + + struct { + uint32_t output_16x16_inter_modes_bti; + } dw173; + + struct { + uint32_t cu_record_bti; + } dw174; + + struct { + uint32_t pak_data_bti; + } dw175; +} vp9_mbenc_curbe_data; + + + +#define VP9_MBENC_IDX_KEY_32x32 0 +#define VP9_MBENC_IDX_KEY_16x16 1 +#define VP9_MBENC_IDX_INTER 2 +#define VP9_MBENC_IDX_TX 3 +#define NUM_VP9_MBENC 4 + +struct vp9_mbenc_context +{ + struct i965_gpe_context gpe_contexts[NUM_VP9_MBENC]; + struct vp9_binding_table_mbenc_tx vp9_mbenc_tx_bti; + struct vp9_binding_table_mbenc_i32 vp9_mbenc_i32_bti; + struct vp9_binding_table_mbenc_i16 vp9_mbenc_i16_bti; + struct vp9_binding_table_mbenc_p vp9_mbenc_p_bti; + dri_bo *mbenc_bo_dys; + int mbenc_bo_size; +}; + +enum vp9_binding_table_offset_dys +{ + VP9_BTI_DYS_INPUT_NV12 = 0, + VP9_BTI_DYS_OUTPUT_Y = 1, + VP9_BTI_DYS_OUTPUT_UV = 2, + VP9_BTI_DYS_NUM_SURFACES = 3 +}; + +struct vp9_binding_table_dys +{ + uint32_t dys_input_frame_nv12; + uint32_t dys_output_frame_y; + uint32_t dys_output_frame_uv; +}; + +typedef struct _vp9_dys_curbe_data +{ + struct { + uint32_t input_frame_width : 16; + uint32_t input_frame_height: 16; + } dw0; + + struct { + uint32_t output_frame_width : 16; + uint32_t output_frame_height: 16; + } dw1; + + struct { + float delta_u; + } dw2; + + struct { + float delta_v; + } dw3; + + /* DW4-15 */ + uint32_t reserved[12]; + + struct { + uint32_t input_frame_nv12_bti; + } dw16; + + struct { + uint32_t output_frame_y_bti; + } dw17; + + struct { + uint32_t avs_sample_idx; + } dw18; +} vp9_dys_curbe_data; + +// DYS kernel parameters +typedef struct _gen9_vp9_dys_kernel_param +{ + uint32_t input_width; + uint32_t input_height; + uint32_t output_width; + uint32_t output_height; + struct object_surface *input_surface; + struct object_surface *output_surface; +} gen9_vp9_dys_kernel_param; + +struct vp9_dys_context { + struct i965_gpe_context gpe_context; + struct vp9_binding_table_dys vp9_dys_bti; +}; + +enum vp9_binding_table_offset_brc +{ + VP9_BTI_BRC_SRCY4X_G9 = 0, + VP9_BTI_BRC_VME_COARSE_INTRA_G9 = 1, + VP9_BTI_BRC_HISTORY_G9 = 2, + VP9_BTI_BRC_CONSTANT_DATA_G9 = 3, + VP9_BTI_BRC_DISTORTION_G9 = 4, + VP9_BTI_BRC_MMDK_PAK_OUTPUT_G9 = 5, + VP9_BTI_BRC_MBENC_CURBE_INPUT_G9 = 6, + VP9_BTI_BRC_MBENC_CURBE_OUTPUT_G9 = 7, + VP9_BTI_BRC_PIC_STATE_INPUT_G9 = 8, + VP9_BTI_BRC_PIC_STATE_OUTPUT_G9 = 9, + VP9_BTI_BRC_SEGMENT_STATE_INPUT_G9 = 10, + VP9_BTI_BRC_SEGMENT_STATE_OUTPUT_G9 = 11, + VP9_BTI_BRC_BITSTREAM_SIZE_G9 = 12, + VP9_BTI_BRC_HFW_DATA_G9 = 13, + VP9_BTI_BRC_NUM_SURFACES_G9 = 14, +}; + +struct vp9_binding_table_brc_intra_dist +{ + uint32_t intra_dist_src_y4xsurface; + uint32_t brc_intra_dist_vme_coarse_intra; + uint32_t brc_intra_dist_distortion_buffer; +}; + +struct vp9_binding_table_brc_init +{ + uint32_t brc_history_buffer; + uint32_t brc_distortion_buffer; +}; + + +typedef struct _vp9_brc_curbe_data +{ + struct { + uint32_t frame_width : 16; + uint32_t frame_height : 16; + } dw0; + + struct { + uint32_t frame_type : 8; + uint32_t segmentation_enable : 8; + uint32_t ref_frame_flags : 8; + uint32_t num_tlevels : 8; + } dw1; + + struct { + uint32_t reserved : 16; + uint32_t intra_mode_disable : 8; + uint32_t loop_filter_type : 8; + } dw2; + + struct { + uint32_t max_level_ratiot0 : 8; + uint32_t max_level_ratiot1 : 8; + uint32_t max_level_ratiot2 : 8; + uint32_t max_level_ratiot3 : 8; + } dw3; + + struct { + uint32_t profile_level_max_frame; + } dw4; + + struct { + uint32_t init_buf_fullness; + } dw5; + + struct { + uint32_t buf_size; + } dw6; + + struct { + uint32_t target_bit_rate; + } dw7; + + struct { + uint32_t max_bit_rate; + } dw8; + + struct { + uint32_t min_bit_rate; + } dw9; + + struct { + uint32_t frame_ratem; + } dw10; + + struct { + uint32_t frame_rated; + } dw11; + + struct { + uint32_t brc_flag : 16; + uint32_t gopp : 16; + } dw12; + + struct { + uint32_t init_frame_width : 16; + uint32_t init_frame_height : 16; + } dw13; + + struct { + uint32_t avbr_accuracy : 16; + uint32_t avbr_convergence : 16; + } dw14; + + struct { + uint32_t min_qp : 16; + uint32_t max_qp : 16; + } dw15; + + struct { + uint32_t cq_level : 16; + uint32_t reserved : 16; + } dw16; + + struct { + uint32_t enable_dynamic_scaling : 16; + uint32_t brc_overshoot_cbr_pct : 16; + } dw17; + + struct { + uint32_t pframe_deviation_threshold0 : 8; + uint32_t pframe_deviation_threshold1 : 8; + uint32_t pframe_deviation_threshold2 : 8; + uint32_t pframe_deviation_threshold3 : 8; + } dw18; + + struct { + uint32_t pframe_deviation_threshold4 : 8; + uint32_t pframe_deviation_threshold5 : 8; + uint32_t pframe_deviation_threshold6 : 8; + uint32_t pframe_deviation_threshold7 : 8; + } dw19; + + struct { + uint32_t vbr_deviation_threshold0 : 8; + uint32_t vbr_deviation_threshold1 : 8; + uint32_t vbr_deviation_threshold2 : 8; + uint32_t vbr_deviation_threshold3 : 8; + } dw20; + + struct { + uint32_t vbr_deviation_threshold4 : 8; + uint32_t vbr_deviation_threshold5 : 8; + uint32_t vbr_deviation_threshold6 : 8; + uint32_t vbr_deviation_threshold7 : 8; + } dw21; + + struct { + uint32_t kframe_deviation_threshold0 : 8; + uint32_t kframe_deviation_threshold1 : 8; + uint32_t kframe_deviation_threshold2 : 8; + uint32_t kframe_deviation_threshold3 : 8; + } dw22; + + struct { + uint32_t kframe_deviation_threshold4 : 8; + uint32_t kframe_deviation_threshold5 : 8; + uint32_t kframe_deviation_threshold6 : 8; + uint32_t kframe_deviation_threshold7 : 8; + } dw23; + + struct { + uint32_t target_size; + } dw24; + + struct { + uint32_t frame_number; + } dw25; + + struct { + uint32_t reserved; + } dw26; + + struct { + uint32_t hrd_buffer_fullness_upper_limit; + } dw27; + + struct { + uint32_t hrd_buffer_fullness_lower_limit; + } dw28; + + struct { + uint32_t reserved; + } dw29; + + struct { + uint32_t reserved; + } dw30; + + struct { + uint32_t reserved; + } dw31; + + struct { + uint32_t seg_delta_qp0 : 8; + uint32_t seg_delta_qp1 : 8; + uint32_t seg_delta_qp2 : 8; + uint32_t seg_delta_qp3 : 8; + } dw32; + + struct { + uint32_t seg_delta_qp4 : 8; + uint32_t seg_delta_qp5 : 8; + uint32_t seg_delta_qp6 : 8; + uint32_t seg_delta_qp7 : 8; + } dw33; + + struct { + uint32_t temporal_id : 8; + uint32_t multi_ref_qp_check : 8; + uint32_t reserved : 16; + } dw34; + + struct { + uint32_t max_num_pak_passes : 8; + uint32_t sync_async : 8; + uint32_t overflow : 8; + uint32_t mbrc : 8; + } dw35; + + struct { + uint32_t reserved : 16; + uint32_t segmentation : 8; + uint32_t reserved1 : 8; + } dw36; + + struct { + uint32_t cur_qpindex : 8; + uint32_t lastref_qpindex : 8; + uint32_t goldref_qpindex : 8; + uint32_t altref_qpindex : 8; + } dw37; + + struct { + uint32_t qdelta_ydc : 8; + uint32_t qdelta_uvac : 8; + uint32_t qdelta_uvdc : 8; + uint32_t reserved : 8; + } dw38; + + struct { + uint32_t reserved; + } dw39; + + struct { + uint32_t reserved; + } dw40; + + struct { + uint32_t reserved; + } dw41; + + struct { + uint32_t reserved; + } dw42; + + struct { + uint32_t reserved; + } dw43; + + struct { + uint32_t reserved; + } dw44; + + struct { + uint32_t reserved; + } dw45; + + struct { + uint32_t reserved; + } dw46; + + struct { + uint32_t reserved; + } dw47; + + struct { + uint32_t brc_y4x_input_bti; + } dw48; + + struct { + uint32_t brc_vme_coarse_intra_input_bti; + } dw49; + + struct { + uint32_t brc_history_buffer_bti; + } dw50; + + struct { + uint32_t brc_const_data_input_bti; + } dw51; + + struct { + uint32_t brc_distortion_bti; + } dw52; + + struct { + uint32_t brc_mmdk_pak_output_bti; + } dw53; + + struct { + uint32_t brc_enccurbe_input_bti; + } dw54; + + struct { + uint32_t brc_enccurbe_output_bti; + } dw55; + + struct { + uint32_t brc_pic_state_input_bti; + } dw56; + + struct { + uint32_t brc_pic_state_output_bti; + } dw57; + + struct { + uint32_t brc_seg_state_input_bti; + } dw58; + + struct { + uint32_t brc_seg_state_output_bti; + } dw59; + + struct { + uint32_t brc_bitstream_size_data_bti; + } dw60; + + struct { + uint32_t brc_hfw_data_output_bti; + } dw61; + + struct { + uint32_t reserved; + } dw62; + + struct { + uint32_t reserved; + } dw63; +} vp9_brc_curbe_data; + + +#define VP9_BRC_INTRA_DIST 0 +#define VP9_BRC_INIT 1 +#define VP9_BRC_RESET 2 +#define VP9_BRC_UPDATE 3 +#define NUM_VP9_BRC 4 + +struct vp9_brc_context { + struct i965_gpe_context gpe_contexts[NUM_VP9_BRC]; +}; + +struct gen9_vp9_scaling_curbe_param +{ + uint32_t input_picture_width; + uint32_t input_picture_height; + bool use_16x_scaling; + bool use_32x_scaling; + bool mb_variance_output_enabled; + bool mb_pixel_average_output_enabled; + bool blk8x8_stat_enabled; +}; + +struct gen9_vp9_me_curbe_param +{ + VAEncSequenceParameterBufferVP9 *pseq_param; + VAEncPictureParameterBufferVP9 *ppic_param; + uint32_t frame_width; + uint32_t frame_height; + uint32_t ref_frame_flag; + bool use_16x_me; + bool b16xme_enabled; +}; + +struct gen9_vp9_mbenc_curbe_param +{ + VAEncSequenceParameterBufferVP9 *pseq_param; + VAEncPictureParameterBufferVP9 *ppic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param; + + uint16_t frame_width_in_mb; + uint16_t frame_height_in_mb; + uint16_t frame_type; + bool hme_enabled; + uint8_t ref_frame_flag; + VP9_MEDIA_STATE_TYPE media_state_type; + struct object_surface *curr_obj; + struct object_surface *last_ref_obj; + struct object_surface *golden_ref_obj; + struct object_surface *alt_ref_obj; + int picture_coding_type; + bool mbenc_curbe_set_in_brc_update; + bool multi_ref_qp_check; +}; + +struct gen9_vp9_dys_curbe_param +{ + uint32_t input_width; + uint32_t input_height; + uint32_t output_width; + uint32_t output_height; +}; + +struct gen9_vp9_brc_curbe_param +{ + VAEncSequenceParameterBufferVP9 *pseq_param; + VAEncPictureParameterBufferVP9 *ppic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *psegment_param; + + VASurfaceID curr_frame; + uint32_t picture_coding_type; + /* the unit is in bits */ + double *pbrc_init_current_target_buf_full_in_bits; + double *pbrc_init_reset_input_bits_per_frame; + uint32_t *pbrc_init_reset_buf_size_in_bits; + uint32_t frame_width; + uint32_t frame_height; + uint32_t frame_width_in_mb; + uint32_t frame_height_in_mb; + uint32_t ref_frame_flag; + bool hme_enabled; + bool initbrc; + bool mbbrc_enabled; + bool b_used_ref; + int32_t brc_num_pak_passes; + bool multi_ref_qp_check; + int16_t frame_number; + int32_t frame_rate; + VP9_MEDIA_STATE_TYPE media_state_type; +}; + +struct gen9_vp9_scaling_surface_param +{ + VASurfaceID curr_pic; + void *p_scaling_bti; + struct object_surface *input_surface; + struct object_surface *output_surface; + uint32_t input_frame_width; + uint32_t input_frame_height; + uint32_t output_frame_width; + uint32_t output_frame_height; + uint32_t vert_line_stride; + uint32_t vert_line_stride_offset; + bool scaling_out_use_16unorm_surf_fmt; + bool scaling_out_use_32unorm_surf_fmt; + bool mbv_proc_stat_enabled; + struct i965_gpe_resource *pres_mbv_proc_stat_buffer; +}; + +struct gen9_vp9_brc_init_constant_buffer_param +{ + struct i965_gpe_resource *pres_brc_const_data_buffer; + uint16_t picture_coding_type; +}; + +struct gen9_vp9_dys_surface_param +{ + struct object_surface *input_frame; + struct object_surface *output_frame; + uint32_t vert_line_stride; + uint32_t vert_line_stride_offset; +}; + +struct gen9_vp9_me_surface_param +{ + VASurfaceID curr_pic; + struct object_surface *last_ref_pic; + struct object_surface *golden_ref_pic; + struct object_surface *alt_ref_pic; + + struct i965_gpe_resource *pres_4x_memv_data_buffer; + struct i965_gpe_resource *pres_16x_memv_data_buffer; + struct i965_gpe_resource *pres_me_distortion_buffer; + struct i965_gpe_resource *pres_me_brc_distortion_buffer; + uint32_t downscaled_width_in_mb; + uint32_t downscaled_height_in_mb; + uint32_t frame_width; + uint32_t frame_height; + bool use_16x_me; + bool b16xme_enabled; + bool dys_enabled; +}; + +struct gen9_vp9_mbenc_surface_param +{ + int media_state_type; + struct object_surface *last_ref_obj; + struct object_surface *golden_ref_obj; + struct object_surface *alt_ref_obj; + struct object_surface *curr_frame_obj; + unsigned short picture_coding_type; + unsigned int curr_surface_offset; + struct i965_gpe_resource *ps4x_memv_data_buffer; + struct i965_gpe_resource *ps4x_memv_distortion_buffer; + struct i965_gpe_resource *ps_me_brc_distortion_buffer; + uint32_t frame_width; + uint32_t frame_height; + uint32_t frame_width_in_mb; + uint32_t frame_height_in_mb; + bool hme_enabled; + bool segmentation_enabled; + uint32_t mb_data_offset; + struct i965_gpe_resource *pres_mb_code_surface; + struct i965_gpe_resource *pres_segmentation_map; + struct i965_gpe_resource *pres_mode_decision_prev; + struct i965_gpe_resource *pres_mode_decision; + struct i965_gpe_resource *pres_mbenc_curbe_buffer; + struct i965_gpe_resource *pres_output_16x16_inter_modes; + struct i965_gpe_resource *pres_mode_decision_i32; + + struct i965_gpe_context *gpe_context_tx; +}; + +typedef struct _vp9_frame_status_ +{ + uint16_t frame_width; + uint16_t frame_height; + uint8_t frame_type; + uint8_t show_frame; + uint8_t refresh_frame_context; + uint8_t frame_context_idx; + uint8_t intra_only; +} vp9_frame_status; + +#define VP9_BRC_SEQ 0x01 +#define VP9_BRC_HRD 0x02 +#define VP9_BRC_RC 0x04 +#define VP9_BRC_FR 0x08 +#define VP9_BRC_FAILURE (1 << 31) + +struct gen9_hcpe_pipe_mode_select_param +{ + uint32_t codec_mode; + uint32_t stream_out; +}; + +typedef struct _hcp_surface_state { + struct { + uint32_t surface_pitch : 17; + uint32_t reserved : 11; + uint32_t surface_id : 4; + } dw1; + + struct { + uint32_t y_cb_offset : 15; + uint32_t reserved : 12; + uint32_t surface_format : 5; + } dw2; + + struct { + uint32_t default_alpha : 16; + uint32_t y_cr_offset : 16; + } dw3; + + struct { + uint32_t auxilary_index : 11; + uint32_t reserved0 : 1; + uint32_t memory_compression : 1; + uint32_t reserved1 : 18; + } dw4; +} hcp_surface_state; + +struct gen9_encoder_context_vp9 +{ + struct vp9_scaling_context scaling_context; + struct vp9_me_context me_context; + struct vp9_mbenc_context mbenc_context; + struct vp9_brc_context brc_context; + struct vp9_dys_context dys_context; + void *enc_priv_state; + + struct i965_gpe_resource res_brc_history_buffer; + struct i965_gpe_resource res_brc_const_data_buffer; + struct i965_gpe_resource res_brc_mmdk_pak_buffer; + struct i965_gpe_resource res_brc_mbenc_curbe_write_buffer; + struct i965_gpe_resource res_pic_state_brc_read_buffer; + struct i965_gpe_resource res_pic_state_brc_write_hfw_read_buffer; + struct i965_gpe_resource res_pic_state_hfw_write_buffer; + struct i965_gpe_resource res_seg_state_brc_read_buffer; + struct i965_gpe_resource res_seg_state_brc_write_buffer; + struct i965_gpe_resource res_brc_bitstream_size_buffer; + struct i965_gpe_resource res_brc_hfw_data_buffer; + + struct i965_gpe_resource s4x_memv_distortion_buffer; + struct i965_gpe_resource mb_segment_map_surface; + struct i965_gpe_resource s4x_memv_data_buffer; + struct i965_gpe_resource s16x_memv_data_buffer; + struct i965_gpe_resource res_mode_decision[2]; + struct i965_gpe_resource res_output_16x16_inter_modes; + struct i965_gpe_resource res_mb_code_surface; + + /* PAK resource */ + struct i965_gpe_resource res_hvd_line_buffer; + struct i965_gpe_resource res_hvd_tile_line_buffer; + struct i965_gpe_resource res_deblocking_filter_line_buffer; + struct i965_gpe_resource res_deblocking_filter_tile_line_buffer; + struct i965_gpe_resource res_deblocking_filter_tile_col_buffer; + + struct i965_gpe_resource res_metadata_line_buffer; + struct i965_gpe_resource res_metadata_tile_line_buffer; + struct i965_gpe_resource res_metadata_tile_col_buffer; + + struct i965_gpe_resource res_segmentid_buffer; + struct i965_gpe_resource res_prob_buffer; + struct i965_gpe_resource res_prob_delta_buffer; + struct i965_gpe_resource res_prob_counter_buffer; + + struct i965_gpe_resource res_compressed_input_buffer; + struct i965_gpe_resource res_tile_record_streamout_buffer; + struct i965_gpe_resource res_cu_stat_streamout_buffer; + struct i965_gpe_resource res_mv_temporal_buffer[2]; + struct i965_gpe_resource res_pak_uncompressed_input_buffer; + + char *frame_header_data; + + unsigned int use_hw_scoreboard; + unsigned int use_hw_non_stalling_scoreboard; + unsigned int mb_stats_supported; + unsigned int hme_supported; + unsigned int b32xme_supported; + + unsigned int downscaled_width_in_mb4x; + unsigned int downscaled_height_in_mb4x; + + void (*pfn_set_sample_state_dys)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context); + + void (*pfn_set_curbe_mbenc)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_mbenc_curbe_param *param); + + void (*pfn_set_curbe_me)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_me_curbe_param *param); + + void (*pfn_set_curbe_scaling)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_scaling_curbe_param *param); + + void (*pfn_set_curbe_dys)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_dys_curbe_param *param); + + void (*pfn_set_curbe_brc)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_brc_curbe_param *param); + + void (*pfn_send_me_surface)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_me_surface_param *param); + + void (*pfn_send_mbenc_surface)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_mbenc_surface_param *mbenc_param); + + void (*pfn_send_scaling_surface)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_scaling_surface_param *param); + + void (*pfn_send_dys_surface)( + VADriverContextP ctx, + struct encode_state *encode_state, + struct i965_gpe_context *gpe_context, + struct intel_encoder_context *encoder_context, + struct gen9_vp9_dys_surface_param *param); + + struct { + dri_bo *bo; + } reconstructed_object; + + struct { + dri_bo *bo; + } uncompressed_picture_source; + + struct { + dri_bo *bo; + int offset; + int end_offset; + int status_offset; + } indirect_pak_bse_object; + + struct { + dri_bo *bo; + } reference_surfaces[8]; +}; + +enum INTEL_ENC_VP9_TU_MODE +{ + INTEL_ENC_VP9_TU_QUALITY = 0, + INTEL_ENC_VP9_TU_NORMAL, + INTEL_ENC_VP9_TU_PERFORMANCE +}; + +#define VP9_LAST_REF 0x01 +#define VP9_GOLDEN_REF 0x02 +#define VP9_ALT_REF 0x04 + +/* the vp9_encode_status_buffer is the shadow + * of vp9_encode_status_buffer_internal. + */ +struct vp9_encode_status_buffer_internal +{ + uint32_t bs_byte_count_offset; + uint32_t reserved[15]; + + /* the above is shared with the gen9_encode_status_buffer */ + uint32_t image_status_mask_offset; + uint32_t image_status_ctrl_offset; + + uint32_t vp9_image_mask_reg_offset; + uint32_t vp9_image_ctrl_reg_offset; + uint32_t vp9_bs_frame_reg_offset; + dri_bo *bo; + + uint32_t media_index_offset; +}; + + +struct gen9_vp9_state { + unsigned int brc_inited; + unsigned int brc_reset; + unsigned int brc_enabled; + unsigned int use_hw_scoreboard; + unsigned int use_hw_non_stalling_scoreborad; + unsigned int hme_supported; + unsigned int b16xme_supported; + unsigned int hme_enabled; + unsigned int b16xme_enabled; + + unsigned int frame_width; + unsigned int frame_height; + unsigned int frame_width_in_mb; + unsigned int frame_height_in_mb; + unsigned int frame_width_4x; + unsigned int frame_height_4x; + unsigned int frame_width_16x; + unsigned int frame_height_16x; + unsigned int downscaled_width_4x_in_mb; + unsigned int downscaled_height_4x_in_mb; + unsigned int downscaled_width_16x_in_mb; + unsigned int downscaled_height_16x_in_mb; + + unsigned int res_width; + unsigned int res_height; + int brc_allocated; + VASurfaceID curr_frame; + VASurfaceID last_ref_pic; + VASurfaceID alt_ref_pic; + VASurfaceID golden_ref_pic; + + struct object_surface *input_surface_obj; + struct object_surface *last_ref_obj; + struct object_surface *golden_ref_obj; + struct object_surface *alt_ref_obj; + + VAEncSequenceParameterBufferVP9 *seq_param; + VAEncSequenceParameterBufferVP9 bogus_seq_param; + VAEncPictureParameterBufferVP9 *pic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *segment_param; + double brc_init_current_target_buf_full_in_bits; + double brc_init_reset_input_bits_per_frame; + uint32_t brc_init_reset_buf_size_in_bits; + unsigned int gop_size; + unsigned int target_bit_rate; + unsigned int max_bit_rate; + unsigned int min_bit_rate; + unsigned long init_vbv_buffer_fullness_in_bit; + unsigned long vbv_buffer_size_in_bit; + int frame_number; + uint32_t frame_rate; + uint8_t ref_frame_flag; + uint8_t dys_ref_frame_flag; + uint8_t picture_coding_type; + unsigned int adaptive_transform_decision_enabled; + int curr_mode_decision_index; + int target_usage; + int window_size; + int target_percentage; + unsigned int mb_data_offset; + int curr_pak_pass; + unsigned int brc_flag_check; + bool first_frame; + bool dys_enabled; + bool dys_in_use; + bool mbenc_curbe_set_in_brc_update; + bool multi_ref_qp_check; + bool brc_distortion_buffer_supported; + bool brc_constant_buffer_supported; + bool mbenc_keyframe_dist_enabled; + unsigned int curr_mv_temporal_index; + int tx_mode; + int num_pak_passes; + char *alias_insert_data; + int header_length; + vp9_header_bitoffset frame_header; + + struct vp9_encode_status_buffer_internal status_buffer; + + /* the frame context related with VP9 encoding */ + FRAME_CONTEXT vp9_frame_ctx[FRAME_CONTEXTS]; + FRAME_CONTEXT vp9_current_fc; + int frame_ctx_idx; + + vp9_frame_status vp9_last_frame; +}; + +struct vp9_compressed_element { + uint8_t a_valid : 1; + uint8_t a_probdiff_select: 1; + uint8_t a_prob_select : 1; + uint8_t a_bin : 1; + uint8_t b_valid : 1; + uint8_t b_probdiff_select: 1; + uint8_t b_prob_select : 1; + uint8_t b_bin : 1; +}; + +#define VP9_BRC_HISTORY_BUFFER_SIZE 768 +#define VP9_BRC_CONSTANTSURFACE_SIZE 17792 +#define VP9_BRC_BITSTREAM_SIZE_BUFFER_SIZE 16 +#define VP9_BRC_MMDK_PAK_BUFFER_SIZE 64 +#define VP9_SEGMENT_STATE_BUFFER_SIZE 256 +#define VP9_HFW_BRC_DATA_BUFFER_SIZE 32 + +#endif /* GEN9_VP9_ENCODER_H */ diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder_kernels.c intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder_kernels.c --- intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder_kernels.c 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder_kernels.c 2016-06-17 01:06:24.000000000 +0000 @@ -0,0 +1,4955 @@ +/* + * * Copyright (c) 2016, Intel Corporation + * + * All rights reserved. + * Redistribution. Redistribution and use in binary form, without modification, are + * permitted provided that the following conditions are met: + * Redistributions must reproduce the above copyright notice and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * Neither the name of Intel Corporation nor the names of its suppliers may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * No reverse engineering, decompilation, or disassembly of this software is permitted. + * Limited patent license. Intel Corporation grants a world-wide, royalty-free, + * nonexclusive license under patents it now or hereafter owns or controls to make, have made, + * use, import, offer to sell and sell (.Utilize.) this software, but solely to the extent that any + * such patent is necessary to Utilize the software alone. The patent license shall not apply + * to any combinations which include this software. No hardware per se is licensed here under. + + * DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "gen9_vp9_encoder_kernels.h" + + +const unsigned int media_vp9_kernels[AllVP9ENC_SZ] = { +0x0000000b,0x00000048,0x00001c48,0x00002b08,0x00009c88,0x0000b5c8,0x00011c88,0x00017d08, +0x000183c8,0x00018ac8,0x0001a748,0x0001bac8,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000005,0x2f82124c,0x16000004,0x07ff07ff,0x00000005,0x2f80124c,0x16000006,0x07ff07ff, +0x00000001,0x2f861648,0x00000000,0x00000000,0x00000009,0x2f841248,0x16000f82,0x00030003, +0x00000009,0x2f881248,0x16000f80,0x00030003,0x00000001,0x202c1248,0x00000f88,0x00000000, +0x00000040,0x202e1248,0x16000f88,0x00080008,0x0000000c,0x20301248,0x16000022,0x00020002, +0x00000040,0x203c1248,0x1200002e,0x00004030,0x03000010,0x20001240,0x1200002e,0x00000030, +0x00010001,0x2f861248,0x0000003c,0x00000000,0x00000040,0x20441248,0x1e000030,0xffffffff, +0x04000010,0x20001240,0x12000f88,0x00000030,0x00010001,0x202c1248,0x00000044,0x00000000, +0x00010001,0x2f861648,0x00000000,0x00070007,0x00000009,0x20601248,0x1600002c,0x00020002, +0x20004d01,0x00000407,0x00000009,0x20801228,0x16000f84,0x00020002,0x00000001,0x20841208, +0x00000060,0x00000000,0x00000001,0x2088060c,0x00000000,0x0007001f,0x00000040,0x22000204, +0x06000024,0x02890000,0x0c600031,0x2b803a0c,0x00000080,0x00000200,0x00000040,0x20841228, +0x16000060,0x00080008,0x0c600031,0x2c803a0c,0x00000080,0x00000200,0x00000040,0x20841228, +0x16000060,0x00100010,0x0c600031,0x2d803a0c,0x00000080,0x00000200,0x00000040,0x20841228, +0x16000060,0x00180018,0x0c600031,0x2e803a0c,0x00000080,0x00000200,0x00800040,0x20a02248, +0x228d0b80,0x008d0ba0,0x00800040,0x20e02248,0x228d0bc0,0x008d0be0,0x00800040,0x21202248, +0x228d0c00,0x008d0c20,0x00800040,0x21602248,0x228d0c40,0x008d0c60,0x00800040,0x21a02248, +0x228d0c80,0x008d0ca0,0x00800040,0x21e02248,0x228d0cc0,0x008d0ce0,0x00800040,0x22202248, +0x228d0d00,0x008d0d20,0x00800040,0x22602248,0x228d0d40,0x008d0d60,0x00600040,0x22a01248, +0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248, +0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248, +0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248, +0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248, +0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248, +0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248, +0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248, +0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248, +0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248, +0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23402288, +0x00400080,0x00000000,0x00400001,0x23482288,0x00400088,0x00000000,0x00400001,0x23502288, +0x00400090,0x00000000,0x00400001,0x23582288,0x00400098,0x00000000,0x00800040,0x20a02248, +0x228d0b90,0x008d0bb0,0x00800040,0x20e02248,0x228d0bd0,0x008d0bf0,0x00800040,0x21202248, +0x228d0c10,0x008d0c30,0x00800040,0x21602248,0x228d0c50,0x008d0c70,0x00800040,0x21a02248, +0x228d0c90,0x008d0cb0,0x00800040,0x21e02248,0x228d0cd0,0x008d0cf0,0x00800040,0x22202248, +0x228d0d10,0x008d0d30,0x00800040,0x22602248,0x228d0d50,0x008d0d70,0x00600040,0x22a01248, +0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248, +0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248, +0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248, +0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248, +0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248, +0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248, +0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248, +0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248, +0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248, +0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23442288, +0x00400080,0x00000000,0x00400001,0x234c2288,0x00400088,0x00000000,0x00400001,0x23542288, +0x00400090,0x00000000,0x00400001,0x235c2288,0x00400098,0x00000000,0x00800040,0x20a02248, +0x228d0d80,0x008d0da0,0x00800040,0x20e02248,0x228d0dc0,0x008d0de0,0x00800040,0x21202248, +0x228d0e00,0x008d0e20,0x00800040,0x21602248,0x228d0e40,0x008d0e60,0x00800040,0x21a02248, +0x228d0e80,0x008d0ea0,0x00800040,0x21e02248,0x228d0ec0,0x008d0ee0,0x00800040,0x22202248, +0x228d0f00,0x008d0f20,0x00800040,0x22602248,0x228d0f40,0x008d0f60,0x00600040,0x22a01248, +0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248, +0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248, +0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248, +0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248, +0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248, +0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248, +0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248, +0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248, +0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248, +0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23602288, +0x00400080,0x00000000,0x00400001,0x23682288,0x00400088,0x00000000,0x00400001,0x23702288, +0x00400090,0x00000000,0x00400001,0x23782288,0x00400098,0x00000000,0x00800040,0x20a02248, +0x228d0d90,0x008d0db0,0x00800040,0x20e02248,0x228d0dd0,0x008d0df0,0x00800040,0x21202248, +0x228d0e10,0x008d0e30,0x00800040,0x21602248,0x228d0e50,0x008d0e70,0x00800040,0x21a02248, +0x228d0e90,0x008d0eb0,0x00800040,0x21e02248,0x228d0ed0,0x008d0ef0,0x00800040,0x22202248, +0x228d0f10,0x008d0f30,0x00800040,0x22602248,0x228d0f50,0x008d0f70,0x00600040,0x22a01248, +0x124000a0,0x004000a2,0x00600040,0x22b01248,0x124000e0,0x004000e2,0x00600040,0x22c01248, +0x12400120,0x00400122,0x00600040,0x22d01248,0x12400160,0x00400162,0x00600040,0x22e01248, +0x124001a0,0x004001a2,0x00600040,0x22f01248,0x124001e0,0x004001e2,0x00600040,0x23001248, +0x12400220,0x00400222,0x00600040,0x23101248,0x12400260,0x00400262,0x00a00040,0x22a01248, +0x168d02a0,0x00020002,0x00a00040,0x22e01248,0x168d02e0,0x00020002,0x00a0000c,0x22a01248, +0x168d02a0,0x00020002,0x00a0000c,0x22e01248,0x168d02e0,0x00020002,0x00600040,0x22a01248, +0x128d02a0,0x008d02b0,0x00600040,0x22c01248,0x128d02c0,0x008d02d0,0x00600040,0x22e01248, +0x128d02e0,0x008d02f0,0x00600040,0x23001248,0x128d0300,0x008d0310,0x00600040,0x20601248, +0x12aa02a0,0x00aa02a2,0x00600040,0x20701248,0x12aa02e0,0x00aa02e2,0x00800040,0x20601248, +0x168d0060,0x00020002,0x0080000c,0x40801288,0x168d0060,0x00020002,0x00400001,0x23642288, +0x00400080,0x00000000,0x00400001,0x236c2288,0x00400088,0x00000000,0x00400001,0x23742288, +0x00400090,0x00000000,0x00400001,0x237c2288,0x00400098,0x00000000,0x02000010,0x20001260, +0x1e000f86,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000068,0x20004d01,0x00000307, +0x00000001,0x20601208,0x00000f84,0x00000000,0x00000001,0x20641208,0x00000f88,0x00000000, +0x00000001,0x2068060c,0x00000000,0x00070007,0x00000040,0x22000204,0x06000028,0x020a8000, +0x0c600033,0x0001a014,0x00002062,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000268, +0x00000040,0x20241228,0x16004f86,0x00070007,0x00000041,0x202c1248,0x16000024,0x00080008, +0x00000040,0x22001240,0x1600002c,0x03400340,0x00600001,0x20502288,0x00208000,0x00000000, +0x05000010,0x20000200,0x16000024,0x00010001,0x00000001,0x20441e68,0x00000000,0x00010001, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23482288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00020002, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23502288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00030003, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23582288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00040004, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23602288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00050005, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23682288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00060006, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23702288,0x008d0050,0x00000000,0x05000010,0x20000200,0x16000024,0x00070007, +0x00010002,0x404c1a88,0x1e000044,0x00000000,0x02600005,0x20002260,0x1600004c,0x00010001, +0x00610001,0x23782288,0x008d0050,0x00000000,0x20004d01,0x00000307,0x00000001,0x20601208, +0x00000f84,0x00000000,0x00000001,0x20641208,0x00000f88,0x00000000,0x00000001,0x2068060c, +0x00000000,0x00070007,0x00000040,0x22000204,0x06000028,0x020a8000,0x0c600033,0x0001a014, +0x00002062,0x00000000,0x00000005,0x4f840248,0x16000038,0x00010001,0x00000005,0x4f880248, +0x16000038,0x00020002,0x00000005,0x4f8c0248,0x16000038,0x00040004,0x01000010,0x20000200, +0x16000038,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000ed8,0x00a00041,0x20602248, +0x228d0b80,0x008d0b80,0x00a00041,0x20a02248,0x228d0ba0,0x008d0ba0,0x00a00041,0x20e02248, +0x228d0bc0,0x008d0bc0,0x00a00041,0x21202248,0x228d0be0,0x008d0be0,0x00a00041,0x21602248, +0x228d0c00,0x008d0c00,0x00a00041,0x21a02248,0x228d0c20,0x008d0c20,0x00a00041,0x21e02248, +0x228d0c40,0x008d0c40,0x00a00041,0x22202248,0x228d0c60,0x008d0c60,0x00a00041,0x22602248, +0x228d0c80,0x008d0c80,0x00a00041,0x22a02248,0x228d0ca0,0x008d0ca0,0x00a00041,0x22e02248, +0x228d0cc0,0x008d0cc0,0x00a00041,0x23202248,0x228d0ce0,0x008d0ce0,0x00a00041,0x23602248, +0x228d0d00,0x008d0d00,0x00a00041,0x23a02248,0x228d0d20,0x008d0d20,0x00a00041,0x23e02248, +0x228d0d40,0x008d0d40,0x00a00041,0x24202248,0x228d0d60,0x008d0d60,0x00a00041,0x24602248, +0x228d0d80,0x008d0d80,0x00a00041,0x24a02248,0x228d0da0,0x008d0da0,0x00a00041,0x24e02248, +0x228d0dc0,0x008d0dc0,0x00a00041,0x25202248,0x228d0de0,0x008d0de0,0x00a00041,0x25602248, +0x228d0e00,0x008d0e00,0x00a00041,0x25a02248,0x228d0e20,0x008d0e20,0x00a00041,0x25e02248, +0x228d0e40,0x008d0e40,0x00a00041,0x26202248,0x228d0e60,0x008d0e60,0x00a00041,0x26602248, +0x228d0e80,0x008d0e80,0x00a00041,0x26a02248,0x228d0ea0,0x008d0ea0,0x00a00041,0x26e02248, +0x228d0ec0,0x008d0ec0,0x00a00041,0x27202248,0x228d0ee0,0x008d0ee0,0x00a00041,0x27602248, +0x228d0f00,0x008d0f00,0x00a00041,0x27a02248,0x228d0f20,0x008d0f20,0x00a00041,0x27e02248, +0x228d0f40,0x008d0f40,0x00a00041,0x28202248,0x228d0f60,0x008d0f60,0x00800040,0x28602248, +0x228d0b80,0x008d0ba0,0x00800040,0x28802248,0x228d0bc0,0x008d0be0,0x00800040,0x28a02248, +0x228d0c00,0x008d0c20,0x00800040,0x28c02248,0x228d0c40,0x008d0c60,0x00800040,0x28e02248, +0x228d0c80,0x008d0ca0,0x00800040,0x29002248,0x228d0cc0,0x008d0ce0,0x00800040,0x29202248, +0x228d0d00,0x008d0d20,0x00800040,0x29402248,0x228d0d40,0x008d0d60,0x00a00040,0x28601248, +0x128d0860,0x008d08a0,0x00a00040,0x28a01248,0x128d08e0,0x008d0920,0x00a00040,0x28601248, +0x128d0860,0x008d08a0,0x00800040,0x28601248,0x128d0860,0x008d0880,0x00600040,0x28601248, +0x128d0860,0x008d0870,0x00400040,0x28601248,0x12690860,0x00690868,0x00200040,0x28601248, +0x12450860,0x00450864,0x80000040,0x20501208,0x12000860,0x00000862,0x00800040,0x29601208, +0x128d0060,0x008d00a0,0x00800040,0x29a01208,0x128d00e0,0x008d0120,0x00800040,0x29e01208, +0x128d0160,0x008d01a0,0x00800040,0x2a201208,0x128d01e0,0x008d0220,0x00800040,0x2a601208, +0x128d0260,0x008d02a0,0x00800040,0x2aa01208,0x128d02e0,0x008d0320,0x00800040,0x2ae01208, +0x128d0360,0x008d03a0,0x00800040,0x2b201208,0x128d03e0,0x008d0420,0x20013640,0x4d4b4be7, +0x20013640,0x514f4de7,0x20013640,0x55534fe7,0x20013640,0x595751e7,0x20013640,0x4d4b4be7, +0x20013640,0x514f4de7,0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad, +0x00200040,0x29600208,0x02450960,0x00450968,0x80000040,0x2f900208,0x02000960,0x00000964, +0x00800040,0x28602248,0x228d0b90,0x008d0bb0,0x00800040,0x28802248,0x228d0bd0,0x008d0bf0, +0x00800040,0x28a02248,0x228d0c10,0x008d0c30,0x00800040,0x28c02248,0x228d0c50,0x008d0c70, +0x00800040,0x28e02248,0x228d0c90,0x008d0cb0,0x00800040,0x29002248,0x228d0cd0,0x008d0cf0, +0x00800040,0x29202248,0x228d0d10,0x008d0d30,0x00800040,0x29402248,0x228d0d50,0x008d0d70, +0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00a00040,0x28a01248,0x128d08e0,0x008d0920, +0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00800040,0x28601248,0x128d0860,0x008d0880, +0x00600040,0x28601248,0x128d0860,0x008d0870,0x00400040,0x28601248,0x12690860,0x00690868, +0x00200040,0x28601248,0x12450860,0x00450864,0x80000040,0x20541208,0x12000860,0x00000862, +0x00800040,0x29601208,0x128d0080,0x008d00c0,0x00800040,0x29a01208,0x128d0100,0x008d0140, +0x00800040,0x29e01208,0x128d0180,0x008d01c0,0x00800040,0x2a201208,0x128d0200,0x008d0240, +0x00800040,0x2a601208,0x128d0280,0x008d02c0,0x00800040,0x2aa01208,0x128d0300,0x008d0340, +0x00800040,0x2ae01208,0x128d0380,0x008d03c0,0x00800040,0x2b201208,0x128d0400,0x008d0440, +0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x55534fe7,0x20013640,0x595751e7, +0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7, +0x606d2140,0x4b4b4bad,0x00200040,0x29600208,0x02450960,0x00450968,0x80000040,0x2f940208, +0x02000960,0x00000964,0x00800040,0x28602248,0x228d0d80,0x008d0da0,0x00800040,0x28802248, +0x228d0dc0,0x008d0de0,0x00800040,0x28a02248,0x228d0e00,0x008d0e20,0x00800040,0x28c02248, +0x228d0e40,0x008d0e60,0x00800040,0x28e02248,0x228d0e80,0x008d0ea0,0x00800040,0x29002248, +0x228d0ec0,0x008d0ee0,0x00800040,0x29202248,0x228d0f00,0x008d0f20,0x00800040,0x29402248, +0x228d0f40,0x008d0f60,0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00a00040,0x28a01248, +0x128d08e0,0x008d0920,0x00a00040,0x28601248,0x128d0860,0x008d08a0,0x00800040,0x28601248, +0x128d0860,0x008d0880,0x00600040,0x28601248,0x128d0860,0x008d0870,0x00400040,0x28601248, +0x12690860,0x00690868,0x00200040,0x28601248,0x12450860,0x00450864,0x80000040,0x20581208, +0x12000860,0x00000862,0x00800040,0x29601208,0x128d0460,0x008d04a0,0x00800040,0x29a01208, +0x128d04e0,0x008d0520,0x00800040,0x29e01208,0x128d0560,0x008d05a0,0x00800040,0x2a201208, +0x128d05e0,0x008d0620,0x00800040,0x2a601208,0x128d0660,0x008d06a0,0x00800040,0x2aa01208, +0x128d06e0,0x008d0720,0x00800040,0x2ae01208,0x128d0760,0x008d07a0,0x00800040,0x2b201208, +0x128d07e0,0x008d0820,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x55534fe7, +0x20013640,0x595751e7,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7,0x20013640,0x4d4b4be7, +0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad,0x00200040,0x29600208,0x02450960,0x00450968, +0x80000040,0x2f980208,0x02000960,0x00000964,0x00800040,0x28602248,0x228d0d90,0x008d0db0, +0x00800040,0x28802248,0x228d0dd0,0x008d0df0,0x00800040,0x28a02248,0x228d0e10,0x008d0e30, +0x00800040,0x28c02248,0x228d0e50,0x008d0e70,0x00800040,0x28e02248,0x228d0e90,0x008d0eb0, +0x00800040,0x29002248,0x228d0ed0,0x008d0ef0,0x00800040,0x29202248,0x228d0f10,0x008d0f30, +0x00800040,0x29402248,0x228d0f50,0x008d0f70,0x00a00040,0x28601248,0x128d0860,0x008d08a0, +0x00a00040,0x28a01248,0x128d08e0,0x008d0920,0x00a00040,0x28601248,0x128d0860,0x008d08a0, +0x00800040,0x28601248,0x128d0860,0x008d0880,0x00600040,0x28601248,0x128d0860,0x008d0870, +0x00400040,0x28601248,0x12690860,0x00690868,0x00200040,0x28601248,0x12450860,0x00450864, +0x80000040,0x205c1208,0x12000860,0x00000862,0x00800040,0x29601208,0x128d0480,0x008d04c0, +0x00800040,0x29a01208,0x128d0500,0x008d0540,0x00800040,0x29e01208,0x128d0580,0x008d05c0, +0x00800040,0x2a201208,0x128d0600,0x008d0640,0x00800040,0x2a601208,0x128d0680,0x008d06c0, +0x00800040,0x2aa01208,0x128d0700,0x008d0740,0x00800040,0x2ae01208,0x128d0780,0x008d07c0, +0x00800040,0x2b201208,0x128d0800,0x008d0840,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7, +0x20013640,0x55534fe7,0x20013640,0x595751e7,0x20013640,0x4d4b4be7,0x20013640,0x514f4de7, +0x20013640,0x4d4b4be7,0x20012b40,0x4c4b4be7,0x606d2140,0x4b4b4bad,0x00200040,0x29600208, +0x02450960,0x00450968,0x80000040,0x2f9c0208,0x02000960,0x00000964,0x0040000c,0x21c00208, +0x16690050,0x00080008,0x00400041,0x20500208,0x02690050,0x00690050,0x0040000c,0x20500208, +0x16690050,0x00080008,0x00400040,0x2f900208,0x02690f90,0x00694050,0x0040000c,0x2f900208, +0x16690f90,0x00080008,0x05400010,0x20000200,0x02690f90,0x00000034,0x00000001,0x20601e68, +0x00000000,0x00010001,0x00410002,0x20701a48,0x1e000060,0x00000000,0x00400001,0x22401208, +0x00690070,0x00000000,0x0000000c,0x20801248,0x16000020,0x00040004,0x00000005,0x20841228, +0x16000020,0x000f000f,0x03000010,0x20000a20,0x1e000084,0x00000000,0x00010002,0x20a01a28, +0x1e000060,0x00000000,0x00000040,0x40c01248,0x0a000080,0x000000a0,0x00000041,0x20c41228, +0x12000f80,0x000000c0,0x00000040,0x20440a28,0x120000c4,0x00000f82,0x00000041,0x21d00a08, +0x1e000044,0x00680068,0x00000041,0x20241208,0x160000c0,0x00340034,0x00000040,0x20e00228, +0x020001d0,0x00000024,0x00800001,0x21001e08,0x00000000,0x00000000,0x00800001,0x21401e08, +0x00000000,0x00000000,0x00600001,0x20f02648,0x00000000,0xcba98765,0x00600001,0x22001208, +0x008d00f0,0x00000000,0x00600001,0x21801208,0x008d00f0,0x00000000,0x00600001,0x20602668, +0x00000000,0x76543210,0x00600040,0x21a01a08,0x1e8d0060,0x00120012,0x0000000c,0x21d00a08, +0x1e0001d0,0x00020002,0x0000000c,0x21d40a08,0x1e0000e0,0x00020002,0x01000010,0x20001260, +0x1e000f84,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307, +0x00000009,0x20601228,0x16000f82,0x00030003,0x00000009,0x20641228,0x16000f80,0x00010001, +0x00000001,0x2068060c,0x00000000,0x00010007,0x00000040,0x22000204,0x06000040,0x020a8000, +0x0c600033,0x00012014,0x00002061,0x00000000,0x01000010,0x20001260,0x1e000f88,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x21000208,0x00000f90,0x00000000, +0x00000001,0x21200208,0x00000f94,0x00000000,0x00000001,0x21400208,0x00000f98,0x00000000, +0x00000001,0x21600208,0x00000f9c,0x00000000,0x01000010,0x20001260,0x1e000f8c,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x21100208,0x000001c0,0x00000000, +0x00000001,0x21300208,0x000001c4,0x00000000,0x00000001,0x21500208,0x000001c8,0x00000000, +0x00000001,0x21700208,0x000001cc,0x00000000,0x01000006,0x20001220,0x12000f88,0x00000f8c, +0x00010020,0x34000004,0x0e001400,0x00000220,0x00000041,0x20241228,0x16000f82,0x00200020, +0x04000010,0x20000a20,0x12000024,0x00000020,0x00010020,0x34000004,0x0e001400,0x000001f0, +0x00000041,0x20241228,0x16000f80,0x00200020,0x04000010,0x20000a20,0x12000024,0x00000022, +0x00010020,0x34000004,0x0e001400,0x000001c0,0x00000041,0x20241228,0x16000f82,0x00200020, +0x00000040,0x20400a28,0x1e000024,0x00100010,0x05000010,0x20000a20,0x12000040,0x00000020, +0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307,0x00000001,0x2068020c, +0x000001d0,0x00000000,0x20004b01,0x00100407,0x20004b01,0x00080507,0x00000040,0x22000204, +0x06000048,0x060ac200,0x0a600031,0x20003a00,0x00000060,0x00000200,0x00000020,0x34000004, +0x0e001400,0x00000048,0x20004d01,0x00000307,0x00000001,0x2068020c,0x000001d0,0x00000000, +0x20005601,0x000c0407,0x20005601,0x00080607,0x00000040,0x22000204,0x06000048,0x0a0ac300, +0x0a800031,0x20003a40,0x00000060,0x00000200,0x00000041,0x20241228,0x16000f82,0x00200020, +0x00000040,0x20400a28,0x1e000024,0x00100010,0x05000010,0x20000a20,0x12000040,0x00000020, +0x00010020,0x34000004,0x0e001400,0x00000058,0x20004d01,0x00000307,0x00000001,0x2068020c, +0x000001d4,0x00000000,0x20004b01,0x00100407,0x20004b01,0x000a0507,0x00000040,0x22000204, +0x06000048,0x060ac200,0x0a600031,0x20003a00,0x00000060,0x00000200,0x00000020,0x34000004, +0x0e001400,0x00000048,0x20004d01,0x00000307,0x00000001,0x2068020c,0x000001d4,0x00000000, +0x20005601,0x000c0407,0x20005601,0x000a0607,0x00000040,0x22000204,0x06000048,0x0a0ac300, +0x0a800031,0x20003a40,0x00000060,0x00000200,0x20004d01,0x00007f07,0x07000031,0x20003a00, +0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x20005601,0x00011b07,0x00000001,0x20b41e68,0x00000000,0x00010001,0x00000005,0x23e0124c, +0x16000004,0x07ff07ff,0x00000005,0x23e2124c,0x16000006,0x07ff07ff,0x00600001,0x24001608, +0x00000000,0x00000000,0x00200001,0x25101608,0x00000000,0x00000000,0x00200040,0x20c02268, +0x1e450376,0xfff0fff0,0x02000005,0x20002220,0x1e000378,0x00100010,0x00200001,0x440c0208, +0x0040036c,0x00000000,0x20005601,0x00031d07,0x00000009,0x23e41268,0x160003e0,0x00040004, +0x00000009,0x23ec1268,0x160003e2,0x00040004,0x0020000c,0x23f81a48,0x1e4500c0,0x00010001, +0x00010002,0x43f01a88,0x1e0000b4,0x00000000,0x02000005,0x20002220,0x1e000378,0x00080008, +0x00000001,0x44141e88,0x00000000,0x00000000,0x00600001,0x24201608,0x00000000,0x00000000, +0x00000001,0x24280208,0x00000368,0x00000000,0x00000001,0x43f21e88,0x00000000,0x00000000, +0x0020000c,0x20e01208,0x164503f8,0x00020002,0x00200001,0x24b81e08,0x00000000,0x00000000, +0x00010002,0x43f41a88,0x1e0000b4,0x00000000,0x00000001,0x26002244,0x00000398,0x00000000, +0x00000001,0x23fc1608,0x00000000,0x00000000,0x00000040,0x43e62288,0x1e000371,0x00010001, +0x0000000c,0x25002228,0x1600036c,0x00070007,0x00200001,0x21001a68,0x006600e0,0x00000000, +0x20004b01,0x001d2407,0x00200001,0x24b00208,0x004503d0,0x00000000,0x60004101,0x001e2505, +0x00000001,0x24081a48,0x000003e4,0x00000000,0x00000001,0x23e81a68,0x000003e4,0x00000000, +0x00000001,0x240a1a48,0x000003ec,0x00000000,0x00000009,0x20b41a28,0x1e000102,0x00040004, +0x00000001,0x23ea1a68,0x000003ec,0x00000000,0x00000001,0x43ee2288,0x00000414,0x00000000, +0x00200001,0x24200208,0x00450360,0x00000000,0x00000001,0x243c0208,0x0000037c,0x00000000, +0x00000040,0x20c01a28,0x0a000100,0x000000b4,0x00000001,0x40b41eac,0x00000000,0x00ff00ff, +0x00000001,0x61200a8c,0x000000c0,0x00000000,0x00610001,0x25102aa8,0x000000b4,0x00000000, +0x05000010,0x20002260,0x1e000394,0x00000000,0x00200001,0x242a2288,0x00000120,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000bc8,0x02000005,0x20000a20,0x1e000500,0x00010001, +0x00000040,0x22002240,0x160003ee,0x05100510,0x00000001,0x25281648,0x00000000,0xffffffff, +0x00010002,0x44252aa8,0x1e008000,0x00000000,0x01000010,0x20002260,0x1e0003f0,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000004c8,0x00000009,0x20bc2228,0x220003e6,0x0000039c, +0x00000009,0x20b81208,0x220003e2,0x0000039c,0x00000009,0x20b41208,0x220003e0,0x0000039c, +0x20004d01,0x00000907,0x00000040,0x22000204,0x060000a4,0x02190000,0x20086001,0x07000900, +0x00000001,0x21801e68,0x00000000,0x00010001,0x00000040,0x20c00a28,0x1e0000bc,0x00030003, +0x00000001,0x43f21e88,0x00000000,0x00010001,0x00000009,0x21200228,0x160000b4,0x00030003, +0x00000005,0x20e00a08,0x1e0000c0,0xfffcfffc,0x00000041,0x21000208,0x220000e0,0x000003ee, +0x00000040,0x21240228,0x020000b8,0x00000100,0x0c600031,0x21403a0c,0x00000120,0x00000200, +0x00600001,0x2600228c,0x008d0140,0x00000000,0x0040000c,0x21601a48,0x1e692600,0x00020002, +0x05400010,0x20001240,0x22690160,0x00000379,0x00410002,0x20c01a48,0x1e000180,0x00000000, +0x00000005,0x20e01228,0x120000c0,0x000000c2,0x02000005,0x20000a20,0x1e0000e0,0x00010001, +0x00010001,0x43f21e88,0x00000000,0x00000000,0x01000010,0x20002260,0x1e0003f2,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000348,0x00200040,0x20bc2248,0x1e450376,0xfff0fff0, +0x0000000c,0x20b61a68,0x1e00037a,0x00020002,0x00000001,0x20b41e68,0x00000000,0x02000200, +0x0020000c,0x20b81a68,0x1e450600,0x00020002,0x00000009,0x20c82268,0x1e000371,0x00040004, +0x00000009,0x20c42268,0x1e000372,0x00040004,0x20004b01,0x00203107,0x0020000c,0x20c01248, +0x164500bc,0x00010001,0x20004b01,0x00213207,0x00200040,0x21101a28,0x1a4503e8,0x004500b4, +0x00200040,0x21301a28,0x124500b8,0x004500bc,0x00200040,0x21501a28,0x124500b8,0x004540bc, +0x00200040,0x21401a28,0x1a4503e8,0x004540b4,0x00000040,0x20c61a68,0x1e0000c8,0x00100010, +0x00200040,0x20e01a68,0x124500b8,0x004540c0,0x00400001,0x26582288,0x000003ee,0x00000000, +0x00200040,0x21200a28,0x12450110,0x004540bc,0x03200010,0x20000a20,0x1a450130,0x004500b4, +0x00200040,0x21102228,0x1e454376,0x00050005,0x20004b01,0x001c3307,0x00200040,0x21601a28, +0x1e4500c4,0xffffffff,0x00200040,0x21001a68,0x1a4500e0,0x004503e8,0x00200040,0x20e01a28, +0x1e4500c4,0xffffffff,0x00600001,0x26801608,0x00000000,0x00000000,0x00210001,0x21001a68, +0x00660120,0x00000000,0x05200010,0x20000a20,0x1a450150,0x004540b4,0x00200005,0x21800a28, +0x0e450110,0x0000fffc,0x00200005,0x20d00a28,0x0e450160,0x0000fffc,0x20005701,0x00241107, +0x20005701,0x00330f07,0x00210001,0x21001a68,0x00660140,0x00000000,0x00200001,0x21401e68, +0x00000000,0x00000000,0x00000040,0x22000204,0x060000b0,0x0c98c000,0x00800001,0x22001648, +0x00000000,0x00000000,0x03200010,0x20001a20,0x0a450100,0x004500e0,0x00210001,0x21001a68, +0x006600d0,0x00000000,0x06200010,0x20001a60,0x22450100,0x00454376,0x00210001,0x21001a68, +0x00660180,0x00000000,0x00200040,0x26201a68,0x1a450100,0x004543e8,0x20005701,0x00310d07, +0x00200001,0x21201a68,0x00450620,0x00000000,0x00000001,0x21a4020c,0x00000140,0x00000000, +0x20005701,0x00311307,0x00000005,0x41ad228c,0x160001ad,0x00f800f8,0x20004001,0x00090d00, +0x00000006,0x41ad228c,0x160001ad,0x00000000,0x08600031,0x26a03a0c,0x000001a0,0x00000200, +0x00000040,0x22000204,0x060000b0,0x10786000,0x00000005,0x26740a28,0x0e0006b8,0x00ffff00, +0x00000005,0x46742288,0x1e0006a0,0x00030003,0x20004b01,0x00381907,0x20004b01,0x00361707, +0x20004b01,0x00391a07,0x20004b01,0x00371807,0x20005701,0x00331507,0x00000001,0x42b62288, +0x00000676,0x00000000,0x00000001,0x42b52288,0x00000675,0x00000000,0x00000005,0x42b42288, +0x1e000674,0x00030003,0x0d600031,0x25203a0c,0x00000260,0x00000200,0x00a00009,0x25401a68, +0x228d0540,0x0000039d,0x00a00009,0x25801a68,0x228d0580,0x0000039d,0x01000010,0x20002260, +0x1e0003f2,0x00000000,0x20004b01,0x00213207,0x20004b01,0x00203107,0x00600001,0x26801608, +0x00000000,0x00000000,0x20004b01,0x001c3307,0x00400001,0x26582288,0x000003ee,0x00000000, +0x00200001,0x26201268,0x004543f8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0, +0x20005701,0x00310607,0x00200001,0x21e01e68,0x00000000,0x00000000,0x00200001,0x21c01268, +0x004543f8,0x00000000,0x20005701,0x00330807,0x20005701,0x00240a07,0x00000005,0x40cd228c, +0x160000cd,0x00f800f8,0x20004b01,0x003c0c07,0x20004b01,0x003d0d07,0x00000040,0x22000204, +0x060000b0,0x10794000,0x00000001,0x20c4020c,0x000001e0,0x00000000,0x20004001,0x000e0600, +0x00800001,0x21201648,0x00000000,0x00000000,0x00000006,0x40cd228c,0x160000cd,0x00000000, +0x08600031,0x27c03a0c,0x000000c0,0x00000200,0x00000020,0x34000004,0x0e001400,0x000000a0, +0x20005701,0x00310807,0x00200001,0x20c01268,0x004543f8,0x00000000,0x00200001,0x20e01e68, +0x00000000,0x00000000,0x20005701,0x00330a07,0x20005701,0x00240c07,0x00000005,0x410d228c, +0x1600010d,0x00f800f8,0x00000040,0x22000204,0x060000b0,0x0c784000,0x20004001,0x00060800, +0x00000001,0x2104020c,0x000000e0,0x00000000,0x00800001,0x21601648,0x00000000,0x00000000, +0x00000006,0x410d228c,0x1600010d,0x00000000,0x08600031,0x27c03a0c,0x00000100,0x00000200, +0x00000005,0x26740a28,0x0e0007d8,0x00ffff00,0x00000005,0x46742288,0x1e0007c0,0x00030003, +0x20004b01,0x003f0a07,0x00000040,0x22000204,0x060000b0,0x10786000,0x20004b01,0x00400b07, +0x20004b01,0x00410c07,0x20004b01,0x00420d07,0x20005701,0x00310607,0x20005701,0x00330807, +0x00000001,0x41162288,0x00000676,0x00000000,0x00000001,0x41152288,0x00000675,0x00000000, +0x00000005,0x41142288,0x1e000674,0x00030003,0x00000001,0x20b41e68,0x00000000,0x00010001, +0x0d600031,0x28a03a0c,0x000000c0,0x00000200,0x20004d01,0x00000607,0x00000040,0x22000204, +0x060000a0,0x020a8000,0x00000001,0x20c8060c,0x00000000,0x0003001f,0x00000009,0x20c01a28, +0x1e0003e4,0x00010001,0x05000010,0x20001240,0x12000528,0x000008a8,0x00a00009,0x28c01a68, +0x228d08c0,0x0000039d,0x00a00009,0x29001a68,0x228d0900,0x0000039d,0x00010002,0x41c01a88, +0x1e0000b4,0x00000000,0x0000000c,0x20b41a08,0x1e0003ec,0x00020002,0x00a00001,0x21e02248, +0x000001c0,0x00000000,0x00000040,0x20c40228,0x020000b4,0x000003fc,0x02600005,0x20001260, +0x168d01e0,0x00010001,0x00610002,0x22201a68,0x1a8d0540,0x008d08c0,0x02600005,0x20001260, +0x168d01f0,0x00010001,0x00610002,0x22401a68,0x1a8d0550,0x008d08d0,0x02600005,0x20001260, +0x168d0200,0x00010001,0x00610002,0x22601a68,0x1a8d0580,0x008d0900,0x02600005,0x20001260, +0x168d0210,0x00010001,0x00610002,0x22801a68,0x1a8d0590,0x008d0910,0x02600005,0x20001260, +0x168d01e0,0x00010001,0x00610002,0x22301a68,0x1a8d0560,0x008d08e0,0x02600005,0x20001260, +0x168d01f0,0x00010001,0x00610002,0x22501a68,0x1a8d0570,0x008d08f0,0x02600005,0x20001260, +0x168d0200,0x00010001,0x00610002,0x22701a68,0x1a8d05a0,0x008d0920,0x02600005,0x20001260, +0x168d0210,0x00010001,0x00610002,0x22901a68,0x1a8d05b0,0x008d0930,0x01000010,0x20002260, +0x1e0003f4,0x00000000,0x0c600033,0x00011014,0x000020c4,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000200,0x05000010,0x20001240,0x12000528,0x000008a8,0x00000001,0x20b41e68, +0x00000000,0x00010001,0x00010002,0x40c01a88,0x1e0000b4,0x00000000,0x00a00001,0x20e02248, +0x000000c0,0x00000000,0x02800005,0x20001260,0x168d00e0,0x00010001,0x00810002,0x41202288, +0x228d05c0,0x008d0940,0x02800005,0x20001260,0x168d0100,0x00010001,0x00800001,0x29802288, +0x00400120,0x00000000,0x00810002,0x41402288,0x228d05d0,0x008d0950,0x02000010,0x20002260, +0x1e0003ee,0x00000000,0x00800001,0x29902288,0x00400140,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000060,0x20004d01,0x00000707,0x20004b01,0x004c0607,0x00000040,0x22000204, +0x060000ac,0x020a8000,0x00000001,0x20e8060c,0x00000000,0x00030007,0x0000000c,0x20e41a28, +0x1e0003ec,0x00020002,0x0000000c,0x20e01a28,0x1e0003e4,0x00010001,0x0c600033,0x00006014, +0x000020e1,0x00000000,0x20004b01,0x004c0607,0x0000000c,0x20b41a08,0x1e0003ec,0x00020002, +0x20004d01,0x00000707,0x00000040,0x22000204,0x060000a8,0x020a8000,0x00000001,0x20e8060c, +0x00000000,0x00030007,0x0000000c,0x20e01a28,0x1e0003e4,0x00010001,0x00400001,0x60c21248, +0x006000c0,0x00000000,0x00000040,0x20e40228,0x020000b4,0x000003fc,0x00200001,0x20d41248, +0x004500d8,0x00000000,0x00200001,0x20c41248,0x004500c8,0x00000000,0x00200001,0x20d81248, +0x004500d0,0x00000000,0x00200001,0x20c81248,0x004500c0,0x00000000,0x00200001,0x20dc1248, +0x004500d4,0x00000000,0x00200001,0x20cc1248,0x004500c4,0x00000000,0x0c600033,0x00006014, +0x000020e1,0x00000000,0x00000040,0x43ee2288,0x1e0003ee,0x00010001,0x00000009,0x20b42208, +0x1e0003e6,0x00020002,0x06000010,0x20002260,0x220003ee,0x00000394,0x00000040,0x23fc0208, +0x020003fc,0x000000b4,0x00010020,0x34000004,0x0e001400,0xfffff438,0x20004d01,0x00007f07, +0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00000005,0x26c0124c,0x16000004,0x07ff07ff,0x00000005,0x26c2124c,0x16000006,0x07ff07ff, +0x06000010,0x20002260,0x1e000025,0x00000000,0x00000001,0x26c41248,0x000006c0,0x00000000, +0x00000001,0x26c61248,0x000006c2,0x00000000,0x00200009,0x26c81248,0x164506c4,0x00050005, +0x00010020,0x34000004,0x0e001400,0x000000f0,0x00200041,0x22b01248,0x164506c4,0x00020002, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x20086001,0x00001700, +0x00200040,0x22c01248,0x164502b0,0x00010001,0x00000001,0x22e01228,0x000002c0,0x00000000, +0x00000001,0x22e41228,0x000002c2,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00400001,0x2320228c,0x00690300,0x00000000,0x00000041,0x23402228,0x1e000320,0x00400040, +0x00000040,0x23600a28,0x1e000340,0x00800080,0x00000040,0x22001240,0x16000360,0x00200020, +0x00800001,0x20a02288,0x00208000,0x00000000,0x00800001,0x20b02288,0x00208010,0x00000000, +0x00800001,0x20c02288,0x00208020,0x00000000,0x00800001,0x20d02288,0x00208030,0x00000000, +0x00200040,0x22c01228,0x164506c8,0x00200020,0x00000001,0x22f01e68,0x00000000,0x00010001, +0x00600001,0x22e01648,0x00000000,0x00000000,0x00000040,0x22a41228,0x16000020,0x000f000f, +0x03200010,0x20000a20,0x124502c0,0x00450020,0x0000000c,0x46cc0a48,0x1e0002a4,0x00040004, +0x00210002,0x22e01a48,0x1e0002f0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048, +0x00000600,0x00000000,0x02000005,0x20001200,0x16000300,0x00030003,0x00010020,0x34000004, +0x0e001400,0x00006f38,0x03200010,0x20001260,0x1e4506c8,0x00000000,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x00000001,0x47401e88,0x00000000,0x007f007f,0x00800001,0x27001648, +0x00000000,0x81818181,0x00800001,0x27201648,0x00000000,0x7f7f7f7f,0x00600001,0x26e01e08, +0x00000000,0x00000000,0x00210002,0x26d01a48,0x1e0002a4,0x00000000,0x03000010,0x20001260, +0x1e0006c2,0x00000000,0x00000001,0x46ce1e88,0x00000000,0x00000000,0x00010001,0x47401e88, +0x00000000,0x00810081,0x06000010,0x20001260,0x1e0006ca,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000050,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000, +0x20086001,0x1f001700,0x00000040,0x22e41228,0x1e0006ca,0xffffffff,0x00000001,0x22e01228, +0x000006c8,0x00000000,0x0c600031,0x27203a0c,0x000002e0,0x00000200,0x06000010,0x20001260, +0x1e0006c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000078,0x20004d01,0x00001707, +0x00000040,0x22000204,0x060002a0,0x02490000,0x00000001,0x22e8060c,0x00000000,0x001f0000, +0x00000001,0x22e41228,0x000006ca,0x00000000,0x00000040,0x22e01228,0x1e0006c8,0xffffffff, +0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x27102288,0x00600340,0x00000000, +0x00800001,0x27002288,0x00600300,0x00000000,0x02000010,0x20000200,0x060006d0,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000078,0x00000040,0x22a41228,0x1e0006c8,0xffffffff, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x00001700, +0x00000040,0x22e41228,0x1e0006ca,0xffffffff,0x20144001,0x00151700,0x0c600031,0x23003a0c, +0x000002e0,0x00000200,0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x47402288, +0x000002c0,0x00000000,0x20004b01,0x00381707,0x20004b01,0x00391807,0x00000040,0x22000204, +0x060002a0,0x02490000,0x03200010,0x20001260,0x1e4506c8,0x00000000,0x00000040,0x23a01228, +0x160006d0,0x00040004,0x00200001,0x23841648,0x00000000,0x00000000,0x00800001,0x67602288, +0x008d0700,0x00000000,0x00a00040,0x23202248,0x224002e0,0x004002e1,0x20004d01,0x00001707, +0x00000001,0x22e8060c,0x00000000,0x001f0003,0x00000001,0x22e41228,0x000006ca,0x00000000, +0x00800040,0x23601248,0x12400320,0x00400322,0x00000001,0x22e01228,0x000006c8,0x00000000, +0x00000040,0x63c00a88,0x120003a0,0x000006d2,0x00800001,0x67a02288,0x008d0710,0x00000000, +0x00800001,0x67612288,0x008d0700,0x00000000,0x00600040,0x22b01248,0x12400360,0x00400362, +0x0c600031,0x27e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,0x160006c8,0x00040004, +0x00000001,0x22e41228,0x000006ca,0x00000000,0x00800001,0x67a12288,0x008d0710,0x00000000, +0x00800001,0x67622288,0x008d0700,0x00000000,0x00400040,0x22c01248,0x124002b0,0x004002b2, +0x00800001,0x67a22288,0x008d0710,0x00000000,0x0c600031,0x28603a0c,0x000002e0,0x00000200, +0x00000040,0x22e01228,0x160006c8,0x00080008,0x00000001,0x22e41228,0x000006ca,0x00000000, +0x00800001,0x67632288,0x008d0700,0x00000000,0x00200040,0x23801248,0x124002c0,0x004002c2, +0x00800001,0x67a32288,0x008d0710,0x00000000,0x0c600031,0x28e03a0c,0x000002e0,0x00000200, +0x00000040,0x22e01228,0x160006c8,0x000c000c,0x00000001,0x22e41228,0x000006ca,0x00000000, +0x00200040,0x23801248,0x16450380,0x00100010,0x0c600031,0x29603a0c,0x000002e0,0x00000200, +0x00210001,0x23841248,0x00450380,0x00000000,0x01000010,0x20002260,0x1e0003c0,0x00040004, +0x00000040,0x23c41228,0x12000384,0x00000386,0x0000000c,0x26d40a08,0x220003c4,0x000003c0, +0x00010001,0x26d41608,0x00000000,0x00800080,0x03000010,0x20000200,0x060006e0,0x7fffffff, +0x00a00040,0x2b602268,0x228d08a0,0x000046d4,0x00a00040,0x2ba02268,0x228d08c0,0x000046d4, +0x00a00040,0x2aa02268,0x228d0840,0x000046d4,0x00a00040,0x29e02268,0x228d07e0,0x000046d4, +0x00a00040,0x2a602268,0x228d0820,0x000046d4,0x00a00040,0x2ae02268,0x228d0860,0x000046d4, +0x00a00040,0x2a202268,0x228d0800,0x000046d4,0x00a00040,0x2b202268,0x228d0880,0x000046d4, +0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2, +0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2, +0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22, +0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001, +0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001, +0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000, +0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000, +0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4, +0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324, +0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364, +0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4, +0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6, +0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326, +0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366, +0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6, +0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001, +0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322, +0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2, +0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000, +0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462, +0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362, +0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000, +0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362, +0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62, +0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0, +0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400, +0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0, +0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000, +0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208, +0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208, +0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e00208, +0x020006e0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248, +0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4,0x03000010,0x20000200, +0x060006e0,0x7fffffff,0x00a00040,0x2ae02268,0x228d0960,0x000046d4,0x00a00040,0x2b602268, +0x228d09a0,0x000046d4,0x00a00040,0x2aa02268,0x228d0940,0x000046d4,0x00a00040,0x29e02268, +0x228d08e0,0x000046d4,0x00a00040,0x2a602268,0x228d0920,0x000046d4,0x00a00040,0x2a202268, +0x228d0900,0x000046d4,0x00a00040,0x2b202268,0x228d0980,0x000046d4,0x00a00040,0x2ba02268, +0x228d09c0,0x000046d4,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68, +0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68, +0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68, +0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68, +0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68, +0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48, +0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48, +0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68, +0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68, +0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68, +0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68, +0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68, +0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68, +0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68, +0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68, +0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68, +0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68, +0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68, +0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68, +0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48, +0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68, +0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48, +0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28, +0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48, +0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48, +0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48, +0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248, +0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248, +0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248, +0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268, +0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308, +0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000, +0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344, +0x00000040,0x26e00208,0x020006e0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362, +0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4, +0x20005601,0x00396100,0x20145601,0x00396500,0x20005601,0x00395f00,0x20145601,0x00396300, +0x03000010,0x20000200,0x060006e8,0x7fffffff,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40, +0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0, +0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0, +0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60, +0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004,0x0e001400,0x00000548, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62, +0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62, +0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2, +0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001, +0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62, +0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000, +0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000, +0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324, +0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4, +0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364, +0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4, +0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326, +0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6, +0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366, +0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001, +0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422, +0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2, +0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422, +0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000, +0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462, +0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001, +0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001, +0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000, +0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000, +0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000, +0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480, +0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500, +0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0, +0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48, +0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268, +0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48, +0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002a4,0x04000002,0x23801248, +0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26ec1208, +0x020003c0,0x000006ec,0x20185601,0x00396100,0x201c5601,0x00396500,0x20185601,0x00395f00, +0x201c5601,0x00396300,0x03000010,0x20000200,0x060006e8,0x7fffffff,0x00a00040,0x2aa02268, +0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x2ba02268, +0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x29e02268, +0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00a00040,0x2ae02268, +0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00010020,0x34000004, +0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68, +0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68, +0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68, +0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68, +0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68, +0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68, +0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68, +0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68, +0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68, +0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48, +0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48, +0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68, +0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68, +0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68, +0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68, +0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68, +0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68, +0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68, +0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68, +0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68, +0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68, +0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68, +0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68, +0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48, +0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68, +0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68, +0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68, +0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48, +0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48, +0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248, +0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48, +0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248, +0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208, +0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad, +0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8, +0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4, +0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002a4, +0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000, +0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x20005601,0x003d6507,0x20005601,0x003b6307, +0x20005601,0x003d6107,0x20005601,0x003b5f07,0x03000010,0x20000200,0x060006f0,0x7fffffff, +0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0, +0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60, +0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40, +0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00, +0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2, +0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2, +0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22, +0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001, +0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001, +0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000, +0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000, +0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4, +0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324, +0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364, +0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4, +0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6, +0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326, +0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366, +0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6, +0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001, +0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322, +0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2, +0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000, +0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462, +0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362, +0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000, +0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362, +0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62, +0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0, +0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400, +0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0, +0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000, +0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208, +0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208, +0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f00208, +0x020006f0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248, +0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4,0x03000010,0x20000200, +0x060006f0,0x7fffffff,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x29e02268, +0x228d08e0,0x008d4be0,0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2b602268, +0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2ba02268, +0x228d09c0,0x008d4cc0,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00a00040,0x2a202268, +0x228d0900,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68, +0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68, +0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68, +0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68, +0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001,0x00a00008,0x25801a68, +0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48, +0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000,0x00a00001,0x2aa01a48, +0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000,0x00600040,0x43e01a68, +0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68, +0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68, +0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68, +0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68, +0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68, +0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68, +0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68, +0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68, +0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68, +0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68, +0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68, +0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48, +0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000,0x00800040,0x24a01a68, +0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48, +0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28, +0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48, +0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48, +0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000,0x00800040,0x24001a48, +0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248, +0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480,0x00800040,0x23a01248, +0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500,0x04600002,0x22c01248, +0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23001268, +0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48,0x1a690300,0x00690308, +0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x00690320,0x00000000, +0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344, +0x00000040,0x26f00208,0x020006f0,0x000002a4,0x04000002,0x23801248,0x12000360,0x00000362, +0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4, +0x20005601,0x00396100,0x20005601,0x00395f00,0x20145601,0x00396500,0x20145601,0x00396300, +0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268,0x228d0c20,0x008d07a0, +0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268,0x228d0c00,0x008d0780, +0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88,0x22400d60,0x00004740, +0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88,0x22400d20,0x00004740, +0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88,0x22400d62,0x00004740, +0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88,0x22400d22,0x00004740, +0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268,0x228d0ca0,0x008d07a0, +0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268,0x228d0c80,0x008d0780, +0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88,0x22400d60,0x00004740, +0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88,0x22400d20,0x00004740, +0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88,0x22400d62,0x00004740, +0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88,0x22400d22,0x00004740, +0x03000010,0x20000200,0x060006f8,0x7fffffff,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40, +0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0, +0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0, +0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60, +0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004,0x0e001400,0x00000548, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62, +0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62, +0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2, +0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68,0x1e8d0a20,0x00010001, +0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68,0x1e8d0a60,0x00010001, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62, +0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48,0x008d2500,0x00000000, +0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48,0x008d2540,0x00000000, +0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324, +0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4, +0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364, +0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4, +0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326, +0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6, +0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366, +0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68,0x1e8d0ae0,0x00010001, +0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422, +0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2, +0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422, +0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48,0x008d2600,0x00000000, +0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462, +0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68,0x1e8d0b60,0x00010001, +0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68,0x1e8d0ba0,0x00010001, +0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48,0x008d2440,0x00000000, +0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2680,0x00000000, +0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248,0x004004c0,0x00000000, +0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48,0x128d0ba0,0x008d0480, +0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d0500, +0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0, +0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad,0x04400002,0x23201a48, +0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268, +0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4,0x04200002,0x23601a48, +0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002a4,0x04000002,0x23801248, +0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26fc1208, +0x020003c0,0x000006fc,0x20185601,0x00396100,0x20185601,0x00395f00,0x201c5601,0x00396500, +0x201c5601,0x00396300,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268, +0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268, +0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88, +0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88, +0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88, +0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88, +0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268, +0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268, +0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88, +0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88, +0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88, +0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88, +0x22400d22,0x00004740,0x03000010,0x20000200,0x060006f8,0x7fffffff,0x00a00040,0x2aa02268, +0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20,0x00a00040,0x29e02268, +0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00a00040,0x2ba02268, +0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268, +0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80,0x00010020,0x34000004, +0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68, +0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68, +0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68, +0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68, +0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68, +0x1a400ae0,0x00404ae2,0x00a00008,0x24c01a68,0x1e8d09e0,0x00010001,0x00a00008,0x25001a68, +0x1e8d0a20,0x00010001,0x00a00008,0x25801a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25401a68, +0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68, +0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68, +0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24c0,0x00000000,0x00a00001,0x2a201a48, +0x008d2500,0x00000000,0x00a00001,0x2aa01a48,0x008d2580,0x00000000,0x00a00001,0x2a601a48, +0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68, +0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68, +0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68, +0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68, +0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68, +0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68, +0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68, +0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68, +0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25c01a68, +0x1e8d0ae0,0x00010001,0x00a00008,0x26001a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68, +0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68, +0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68, +0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25c0,0x00000000,0x00a00001,0x2b201a48, +0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68, +0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26401a68, +0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26801a68, +0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2640,0x00000000,0x00800001,0x44c00a48, +0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48, +0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24801248, +0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x25001a48, +0x128d0ba0,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248, +0x128d03a0,0x008d0500,0x04600002,0x22c01248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208, +0x128d03a0,0x008d03b0,0x00600001,0x23001268,0x008d02c0,0x00000000,0x606d2140,0x171717ad, +0x04400002,0x23201a48,0x1a690300,0x00690308,0x00200040,0x22e00208,0x024502e0,0x004502e8, +0x00400001,0x23401268,0x00690320,0x00000000,0x00000040,0x22a40208,0x020002e0,0x000002e4, +0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002a4, +0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000, +0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02490000,0x00000001,0x22e8060c,0x00000000,0x001f0003,0x00000001,0x22e41228, +0x000006ca,0x00000000,0x00000040,0x22e01228,0x160006c8,0x00100010,0x03000010,0x20000200, +0x060006e0,0x7fffffff,0x0c600031,0x27e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228, +0x160006c8,0x00140014,0x00000001,0x22e41228,0x000006ca,0x00000000,0x0c600031,0x28603a0c, +0x000002e0,0x00000200,0x00000040,0x22e01228,0x160006c8,0x00180018,0x00000001,0x22e41228, +0x000006ca,0x00000000,0x0c600031,0x28e03a0c,0x000002e0,0x00000200,0x00000040,0x22e01228, +0x160006c8,0x001c001c,0x00000001,0x22e41228,0x000006ca,0x00000000,0x00a00040,0x29e02268, +0x228d07e0,0x000046d4,0x00a00040,0x2aa02268,0x228d0840,0x000046d4,0x00a00040,0x2a202268, +0x228d0800,0x000046d4,0x00a00040,0x2a602268,0x228d0820,0x000046d4,0x00a00040,0x2ba02268, +0x228d08c0,0x000046d4,0x00a00040,0x2ae02268,0x228d0860,0x000046d4,0x00a00040,0x2b602268, +0x228d08a0,0x000046d4,0x00a00040,0x2b202268,0x228d0880,0x000046d4,0x0c600031,0x29603a0c, +0x000002e0,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68, +0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68, +0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68, +0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68, +0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68, +0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48, +0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48, +0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68, +0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68, +0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68, +0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68, +0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68, +0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68, +0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68, +0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68, +0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68, +0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68, +0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68, +0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68, +0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48, +0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68, +0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48, +0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28, +0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48, +0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48, +0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48, +0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248, +0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248, +0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248, +0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268, +0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328, +0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000, +0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344, +0x00000040,0x26e00208,0x020006e0,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362, +0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208,0x020003c0,0x000006e4, +0x03000010,0x20000200,0x060006e0,0x7fffffff,0x00a00040,0x2ae02268,0x228d0960,0x000046d4, +0x00a00040,0x2b602268,0x228d09a0,0x000046d4,0x00a00040,0x2aa02268,0x228d0940,0x000046d4, +0x00a00040,0x29e02268,0x228d08e0,0x000046d4,0x00a00040,0x2a602268,0x228d0920,0x000046d4, +0x00a00040,0x2a202268,0x228d0900,0x000046d4,0x00a00040,0x2b202268,0x228d0980,0x000046d4, +0x00a00040,0x2ba02268,0x228d09c0,0x000046d4,0x00010020,0x34000004,0x0e001400,0x00000548, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62, +0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62, +0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2, +0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001, +0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62, +0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000, +0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000, +0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324, +0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4, +0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364, +0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4, +0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326, +0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6, +0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366, +0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001, +0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422, +0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2, +0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422, +0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000, +0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462, +0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001, +0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001, +0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000, +0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000, +0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000, +0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0, +0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0, +0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0, +0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48, +0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268, +0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48, +0x1a450340,0x00450344,0x00000040,0x26e00208,0x020006e0,0x000002c0,0x04000002,0x23801248, +0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26e41208, +0x020003c0,0x000006e4,0x20285601,0x00396500,0x20285601,0x00396300,0x20205601,0x00395f00, +0x20205601,0x00396100,0x03000010,0x20000200,0x020006e8,0x000006e0,0x00a00040,0x2ba02268, +0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2b202268, +0x228d0880,0x008d4c80,0x00a00040,0x2ae02268,0x228d0860,0x008d4c60,0x00a00040,0x29e02268, +0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2a602268, +0x228d0820,0x008d4c20,0x00a00040,0x2aa02268,0x228d0840,0x008d4c40,0x00000001,0x26d80208, +0x000006e0,0x00000000,0x00000001,0x26dc0208,0x000006e4,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68, +0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68, +0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68, +0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68, +0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68, +0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68, +0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68, +0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68, +0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68, +0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48, +0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48, +0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68, +0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68, +0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68, +0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68, +0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68, +0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68, +0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68, +0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68, +0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68, +0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68, +0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68, +0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68, +0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48, +0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68, +0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68, +0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68, +0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48, +0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48, +0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248, +0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48, +0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248, +0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208, +0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad, +0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8, +0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4, +0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208,0x020006e8,0x000002c0, +0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000, +0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x00800001,0x2c200208,0x00000738,0x00000000, +0x00800001,0x2ca00208,0x0000073c,0x00000000,0x00800001,0x2be00208,0x00000738,0x00000000, +0x00800001,0x2c600208,0x0000073c,0x00000000,0x03000010,0x20000200,0x020006e8,0x000006e0, +0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20, +0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0, +0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00, +0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80, +0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2, +0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2, +0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22, +0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001, +0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001, +0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000, +0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000, +0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4, +0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324, +0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364, +0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4, +0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6, +0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326, +0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366, +0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6, +0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001, +0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322, +0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2, +0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000, +0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462, +0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362, +0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000, +0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362, +0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62, +0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0, +0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400, +0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0, +0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000, +0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208, +0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208, +0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26e80208, +0x020006e8,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248, +0x00000380,0x00000000,0x04000002,0x26ec1208,0x020003c0,0x000006ec,0x00000040,0x27440208, +0x120006e8,0x000000a4,0x04000010,0x20000200,0x02000744,0x000006e0,0x00010020,0x34000004, +0x0e001400,0x00000030,0x00000001,0x26d80208,0x00000744,0x00000000,0x00000001,0x46ce1e88, +0x00000000,0x00010001,0x00000001,0x26dc0208,0x000006ec,0x00000000,0x20005601,0x003d6507, +0x20005601,0x003b6307,0x20005601,0x003d6107,0x20005601,0x003b5f07,0x03000010,0x20000200, +0x020006f0,0x000006d8,0x00a00040,0x2ba02268,0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268, +0x228d08a0,0x008d4ca0,0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00a00040,0x2ae02268, +0x228d0860,0x008d4c60,0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x2aa02268, +0x228d0840,0x008d4c40,0x00a00040,0x29e02268,0x228d07e0,0x008d4be0,0x00a00040,0x2a202268, +0x228d0800,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68, +0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68, +0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68, +0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68, +0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68, +0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48, +0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48, +0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68, +0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68, +0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68, +0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68, +0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68, +0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68, +0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68, +0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68, +0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68, +0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68, +0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68, +0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68, +0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68, +0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68, +0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48, +0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68, +0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48, +0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28, +0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68, +0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48, +0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48, +0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48, +0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248, +0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248, +0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248, +0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268, +0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328, +0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000, +0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344, +0x00000040,0x26f00208,0x020006f0,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362, +0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208,0x020003c0,0x000006f4, +0x03000010,0x20000200,0x020006f0,0x000006d8,0x00a00040,0x2a602268,0x228d0920,0x008d4c20, +0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2aa02268,0x228d0940,0x008d4c40, +0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0,0x00a00040,0x2ae02268,0x228d0960,0x008d4c60, +0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b202268,0x228d0980,0x008d4c80, +0x00a00040,0x2a202268,0x228d0900,0x008d4c00,0x00010020,0x34000004,0x0e001400,0x00000548, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68,0x1a4009e0,0x004049e2, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68,0x1a400a20,0x00404a22, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68,0x1a400a60,0x00404a62, +0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68,0x1a400b60,0x00404b62, +0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2, +0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001, +0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68,0x1e8d0a60,0x00010001, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68,0x1a400b60,0x00400b62, +0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48,0x008d24e0,0x00000000, +0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48,0x008d2520,0x00000000, +0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68,0x1a600320,0x00600324, +0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4, +0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68,0x1a600360,0x00604364, +0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68,0x1a6003a0,0x006003a4, +0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68,0x1a600322,0x00600326, +0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6, +0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68,0x1a600362,0x00604366, +0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68,0x1a6003a2,0x006003a6, +0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68,0x1a400a60,0x00400a62, +0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001, +0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68,0x1a400420,0x00400422, +0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68,0x1a4002e0,0x004002e2, +0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68,0x1a400420,0x00404422, +0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48,0x008d25e0,0x00000000, +0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68,0x1a400460,0x00404462, +0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68,0x1e8d0b60,0x00010001, +0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001, +0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48,0x008d2440,0x00000000, +0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48,0x008d2660,0x00000000, +0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248,0x00400480,0x00000000, +0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0, +0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248,0x128d03a0,0x008d04e0, +0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208,0x128d03a0,0x008d03b0, +0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad,0x04400002,0x22a01a48, +0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8,0x00400001,0x23401268, +0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4,0x04200002,0x23601a48, +0x1a450340,0x00450344,0x00000040,0x26f00208,0x020006f0,0x000002c0,0x04000002,0x23801248, +0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000,0x04000002,0x26f41208, +0x020003c0,0x000006f4,0x00000040,0x27440208,0x120006f0,0x000000a4,0x04000010,0x20000200, +0x02000744,0x000006d8,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000001,0x26d80208, +0x00000744,0x00000000,0x00000001,0x46ce1e88,0x00000000,0x00020002,0x00000001,0x26dc0208, +0x000006f4,0x00000000,0x20205601,0x00396100,0x20205601,0x00395f00,0x20285601,0x00396500, +0x20285601,0x00396300,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0,0x00a00040,0x2d602268, +0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760,0x00a00040,0x2d202268, +0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740,0x80800040,0x4c201a88, +0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740,0x80800040,0x4c001a88, +0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740,0x80800040,0x4c211a88, +0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740,0x80800040,0x4c011a88, +0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0,0x00a00040,0x2d602268, +0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760,0x00a00040,0x2d202268, +0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740,0x80800040,0x4ca01a88, +0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740,0x80800040,0x4c801a88, +0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740,0x80800040,0x4ca11a88, +0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740,0x80800040,0x4c811a88, +0x22400d22,0x00004740,0x03000010,0x20000200,0x020006f8,0x000006d8,0x00a00040,0x2aa02268, +0x228d0840,0x008d4c40,0x00a00040,0x2a602268,0x228d0820,0x008d4c20,0x00a00040,0x29e02268, +0x228d07e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0800,0x008d4c00,0x00a00040,0x2ba02268, +0x228d08c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d08a0,0x008d4ca0,0x00a00040,0x2ae02268, +0x228d0860,0x008d4c60,0x00a00040,0x2b202268,0x228d0880,0x008d4c80,0x00010020,0x34000004, +0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x29e01a68, +0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x2a001a68, +0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2,0x00800040,0x2a201a68, +0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2,0x00800040,0x2aa01a68, +0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22,0x00800040,0x2a601a68, +0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001,0x00a00008,0x24e01a68, +0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001,0x00a00008,0x25201a68, +0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00800040,0x23c01a68, +0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23a01a68, +0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000,0x00a00001,0x2a201a48, +0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000,0x00a00001,0x2a601a48, +0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4,0x00600040,0x44001a68, +0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324,0x00600040,0x4ae01a68, +0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364,0x00600040,0x4b201a68, +0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4,0x00600040,0x44401a68, +0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6,0x00600040,0x44021a68, +0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326,0x00600040,0x4ae21a68, +0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366,0x00600040,0x4b221a68, +0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6,0x00600040,0x44421a68, +0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2,0x00800040,0x23201a68, +0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22,0x00800040,0x22e01a68, +0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2,0x00a00008,0x25a01a68, +0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001,0x00800040,0x24801a68, +0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322,0x00800040,0x23601a68, +0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2,0x00800040,0x2b801a68, +0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000,0x00a00001,0x2b201a48, +0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462,0x00800040,0x2ba01a68, +0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362,0x00a00008,0x26201a68, +0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001,0x00800040,0x23801a68, +0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2,0x00a00008,0x26601a68, +0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000,0x00800001,0x44800a48, +0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362,0x00a00001,0x2ba01a48, +0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62,0x00800001,0x24c01248, +0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0,0x00800040,0x24e01a48, +0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400,0x00800040,0x23a01248, +0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0,0x00600040,0x22e01208, +0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000,0x606d2140,0x171717ad, +0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208,0x024502e0,0x004502e8, +0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208,0x020002e0,0x000002e4, +0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208,0x020006f8,0x000002c0, +0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248,0x00000380,0x00000000, +0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x00800001,0x2c200208,0x00000738,0x00000000, +0x00800001,0x2be00208,0x00000738,0x00000000,0x00800001,0x2ca00208,0x0000073c,0x00000000, +0x00800001,0x2c600208,0x0000073c,0x00000000,0x00a00040,0x2da02268,0x228d0c40,0x008d07c0, +0x00a00040,0x2d602268,0x228d0c20,0x008d07a0,0x00a00040,0x2ce02268,0x228d0be0,0x008d0760, +0x00a00040,0x2d202268,0x228d0c00,0x008d0780,0x80800040,0x4c401a88,0x22400da0,0x00004740, +0x80800040,0x4c201a88,0x22400d60,0x00004740,0x80800040,0x4be01a88,0x22400ce0,0x00004740, +0x80800040,0x4c001a88,0x22400d20,0x00004740,0x80800040,0x4c411a88,0x22400da2,0x00004740, +0x80800040,0x4c211a88,0x22400d62,0x00004740,0x80800040,0x4be11a88,0x22400ce2,0x00004740, +0x80800040,0x4c011a88,0x22400d22,0x00004740,0x00a00040,0x2da02268,0x228d0cc0,0x008d07c0, +0x00a00040,0x2d602268,0x228d0ca0,0x008d07a0,0x00a00040,0x2ce02268,0x228d0c60,0x008d0760, +0x00a00040,0x2d202268,0x228d0c80,0x008d0780,0x80800040,0x4cc01a88,0x22400da0,0x00004740, +0x80800040,0x4ca01a88,0x22400d60,0x00004740,0x80800040,0x4c601a88,0x22400ce0,0x00004740, +0x80800040,0x4c801a88,0x22400d20,0x00004740,0x80800040,0x4cc11a88,0x22400da2,0x00004740, +0x80800040,0x4ca11a88,0x22400d62,0x00004740,0x80800040,0x4c611a88,0x22400ce2,0x00004740, +0x80800040,0x4c811a88,0x22400d22,0x00004740,0x03000010,0x20000200,0x020006f8,0x000006d8, +0x00a00040,0x2aa02268,0x228d0940,0x008d4c40,0x00a00040,0x2a602268,0x228d0920,0x008d4c20, +0x00a00040,0x29e02268,0x228d08e0,0x008d4be0,0x00a00040,0x2a202268,0x228d0900,0x008d4c00, +0x00a00040,0x2ba02268,0x228d09c0,0x008d4cc0,0x00a00040,0x2b602268,0x228d09a0,0x008d4ca0, +0x00a00040,0x2ae02268,0x228d0960,0x008d4c60,0x00a00040,0x2b202268,0x228d0980,0x008d4c80, +0x00010020,0x34000004,0x0e001400,0x00000548,0x00800040,0x22e01a68,0x1a4009e0,0x004009e2, +0x00800040,0x29e01a68,0x1a4009e0,0x004049e2,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x2a001a68,0x1a400a20,0x00404a22,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x2a401a68,0x1a400aa0,0x00404aa2, +0x00800040,0x2a201a68,0x1a400a60,0x00404a62,0x00800040,0x2ac01a68,0x1a400ba0,0x00404ba2, +0x00800040,0x2aa01a68,0x1a400b60,0x00404b62,0x00800040,0x2a801a68,0x1a400b20,0x00404b22, +0x00800040,0x2a601a68,0x1a400ae0,0x00404ae2,0x00a00008,0x24a01a68,0x1e8d09e0,0x00010001, +0x00a00008,0x24e01a68,0x1e8d0a20,0x00010001,0x00a00008,0x25601a68,0x1e8d0aa0,0x00010001, +0x00a00008,0x25201a68,0x1e8d0a60,0x00010001,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00800040,0x23c01a68,0x1a400ba0,0x00400ba2,0x00800040,0x23801a68,0x1a400b20,0x00400b22, +0x00800040,0x23a01a68,0x1a400b60,0x00400b62,0x00a00001,0x29e01a48,0x008d24a0,0x00000000, +0x00a00001,0x2a201a48,0x008d24e0,0x00000000,0x00a00001,0x2aa01a48,0x008d2560,0x00000000, +0x00a00001,0x2a601a48,0x008d2520,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4, +0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x4b001a68,0x1a600320,0x00604324, +0x00600040,0x4ae01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364, +0x00600040,0x4b201a68,0x1a600360,0x00604364,0x00600040,0x4b401a68,0x1a6003a0,0x006043a4, +0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6, +0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x4b021a68,0x1a600322,0x00604326, +0x00600040,0x4ae21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366, +0x00600040,0x4b221a68,0x1a600362,0x00604366,0x00600040,0x4b421a68,0x1a6003a2,0x006043a6, +0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400aa0,0x00400aa2, +0x00800040,0x23201a68,0x1a400a60,0x00400a62,0x00800040,0x23001a68,0x1a400a20,0x00400a22, +0x00800040,0x22e01a68,0x1a4009e0,0x004009e2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x25a01a68,0x1e8d0ae0,0x00010001,0x00a00008,0x25e01a68,0x1e8d0b20,0x00010001, +0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322, +0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x2b601a68,0x1a4003e0,0x004043e2, +0x00800040,0x2b801a68,0x1a400420,0x00404422,0x00a00001,0x2ae01a48,0x008d25a0,0x00000000, +0x00a00001,0x2b201a48,0x008d25e0,0x00000000,0x00800040,0x22a01a68,0x1a400460,0x00400462, +0x00800040,0x2ba01a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362, +0x00a00008,0x26201a68,0x1e8d0b60,0x00010001,0x0080000c,0x24401a28,0x1e8d02a0,0x00010001, +0x00800040,0x23801a68,0x1a400b20,0x00400b22,0x00800040,0x23601a68,0x1a400ae0,0x00400ae2, +0x00a00008,0x26601a68,0x1e8d0ba0,0x00010001,0x00a00001,0x2b601a48,0x008d2620,0x00000000, +0x00800001,0x44800a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362, +0x00a00001,0x2ba01a48,0x008d2660,0x00000000,0x00800040,0x24001a48,0x1a400b60,0x00400b62, +0x00800001,0x24c01248,0x00400480,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0, +0x00800040,0x24e01a48,0x128d0ba0,0x008d04c0,0x00800040,0x23a01248,0x128d03a0,0x008d0400, +0x00800040,0x23a01248,0x128d03a0,0x008d04e0,0x04600002,0x23001248,0x128d03a0,0x008d03b0, +0x00600040,0x22e01208,0x128d03a0,0x008d03b0,0x00600001,0x23201268,0x008d0300,0x00000000, +0x606d2140,0x171717ad,0x04400002,0x22a01a48,0x1a690320,0x00690328,0x00200040,0x22e00208, +0x024502e0,0x004502e8,0x00400001,0x23401268,0x006902a0,0x00000000,0x00000040,0x22c00208, +0x020002e0,0x000002e4,0x04200002,0x23601a48,0x1a450340,0x00450344,0x00000040,0x26f80208, +0x020006f8,0x000002c0,0x04000002,0x23801248,0x12000360,0x00000362,0x00200001,0x23c01248, +0x00000380,0x00000000,0x04000002,0x26fc1208,0x020003c0,0x000006fc,0x00000040,0x27440208, +0x120006f8,0x000000a4,0x04000010,0x20000200,0x02000744,0x000006d8,0x00010020,0x34000004, +0x0e001400,0x00000030,0x00000001,0x26d80208,0x00000744,0x00000000,0x00000001,0x46ce1e88, +0x00000000,0x00090009,0x00000001,0x26dc0208,0x000006fc,0x00000000,0x00000041,0x22a01208, +0x160000dc,0x08a008a0,0x00000041,0x22e41208,0x160000dc,0x03c003c0,0x00000041,0x23201208, +0x160000dc,0x02800280,0x00000040,0x22c00208,0x160002a0,0x00800080,0x00000040,0x23000208, +0x160002e4,0x00800080,0x00000040,0x23400208,0x16000320,0x00800080,0x0000000c,0x22e00208, +0x160002c0,0x00080008,0x0000000c,0x27480208,0x16000300,0x00080008,0x0000000c,0x274c0208, +0x16000340,0x00080008,0x04000010,0x20000200,0x020006dc,0x000002e0,0x00010020,0x34000004, +0x0e001400,0x000000a0,0x04000010,0x20000200,0x020006dc,0x00000748,0x00010020,0x34000004, +0x0e001400,0x00000060,0x04000010,0x20000200,0x020006dc,0x0000074c,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x27501608,0x00000000,0x00030003,0x00000020,0x34000004, +0x0e001400,0x00000050,0x00000001,0x27501608,0x00000000,0x00020002,0x00000020,0x34000004, +0x0e001400,0x00000030,0x00000001,0x27501608,0x00000000,0x00010001,0x00000020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x27501608,0x00000000,0x00000000,0x00000041,0x22c01228, +0x160006c2,0x00020002,0x00000041,0x23441228,0x160006c0,0x00020002,0x00000001,0x62a0028c, +0x00000750,0x00000000,0x00800001,0x22e01608,0x00000000,0x00000000,0x00000040,0x22000204, +0x060002d0,0x020a0300,0x00000001,0x43002288,0x000006ce,0x00000000,0x00000040,0x23200a28, +0x1e0002c0,0x00010001,0x00000040,0x23600a28,0x1e000344,0x00010001,0x00000001,0x42ee2288, +0x000002a0,0x00000000,0x00000040,0x23140208,0x120006d8,0x000000d4,0x00000041,0x23400a28, +0x12000320,0x000006cc,0x00000040,0x23800a28,0x0a000340,0x00000360,0x00000041,0x23a00a28, +0x1e000380,0x00400040,0x00000008,0x23c80a08,0x1e0003a0,0x00040004,0x0a800033,0x00017054, +0x000023c2,0x00000000,0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010, +0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c, +0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00200001,0x24ec1248,0x00450020,0x00000000,0x00000005,0x22a6124c,0x16000006,0x07ff07ff, +0x00000005,0x22a4124c,0x16000004,0x07ff07ff,0x00000040,0x22c01228,0x160004ec,0x000f000f, +0x00000005,0x24001260,0x160002a6,0x00010001,0x0000000c,0x24e81248,0x160002a6,0x00010001, +0x0000000c,0x44f00a48,0x1e0002c0,0x00040004,0x00000048,0x24e01248,0x1e0002a4,0x00020002, +0x00000001,0x24e61248,0x000004e8,0x00000000,0x00000041,0x22e01228,0x120004e8,0x000004f0, +0x05000010,0x20001240,0x120004e0,0x000004f0,0x00000001,0x24e41248,0x000004e0,0x00000000, +0x00000040,0x24f40a08,0x120002e0,0x000004e0,0x00010020,0x34000004,0x0e001400,0x00000030, +0x0a600032,0x22e03a08,0x06000000,0x0219e000,0x20004d01,0x00171707,0x20004d01,0x00007d07, +0x07000031,0x20003a00,0x06000fa0,0x82000010,0x06000010,0x20002260,0x1e000025,0x00000000, +0x00200009,0x24f81248,0x164504e4,0x00040004,0x00010020,0x34000004,0x0e001400,0x000000c0, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x20086001,0x00001700, +0x00000001,0x22e41208,0x000004e8,0x00000000,0x00000001,0x22e01208,0x000004e0,0x00000000, +0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00400001,0x22c0228c,0x00690300,0x00000000, +0x00000041,0x22a42228,0x1e0002c0,0x00400040,0x00000040,0x23200a28,0x1e0002a4,0x00800080, +0x00000040,0x22001240,0x16000320,0x00200020,0x00800001,0x20a02288,0x00208000,0x00000000, +0x00800001,0x20b02288,0x00208010,0x00000000,0x00800001,0x20c02288,0x00208020,0x00000000, +0x00200005,0x22b01228,0x164504e4,0x00010001,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x00600001,0x22c01648,0x00000000,0x00000000,0x00200040,0x22e01228,0x164504f8,0x00100010, +0x00600001,0x23401648,0x00000000,0x00000000,0x00800001,0x25801e08,0x00000000,0x00000000, +0x03200010,0x20000a20,0x1e4502b0,0x00000000,0x00800001,0x26001e08,0x00000000,0x00000000, +0x00800001,0x26401e08,0x00000000,0x00000000,0x00600001,0x26281648,0x00000000,0x7f7f7f7f, +0x00600001,0x26401648,0x00000000,0x81818181,0x00210002,0x22c01a48,0x1e0002a4,0x00000000, +0x00000001,0x45bd1e88,0x00000000,0x00000000,0x00800001,0x25c01e08,0x00000000,0x00000000, +0x00000001,0x25140e28,0x00000000,0x08060504,0x00800001,0x26702288,0x008d0628,0x00000000, +0x2203eb10,0x00160007,0x00600001,0x22c02648,0x00000000,0x76543210,0x00800001,0x26602288, +0x008d0640,0x00000000,0x00000001,0x25080e28,0x00000000,0x09010200,0x00000001,0x25100e28, +0x00000000,0x03010002,0x00000001,0x45281688,0x00000000,0x00070007,0x00000001,0x22a61048, +0x00000600,0x00000000,0x06200010,0x20000a20,0x124502e0,0x00450020,0x00600001,0x25601208, +0x008d02c0,0x00000000,0x00600001,0x22c01648,0x00000000,0x00000000,0x00000001,0x25240e28, +0x00000000,0x08060504,0x00000001,0x25200e28,0x00000000,0x03000201,0x00600001,0x25401e08, +0x00000000,0x00000000,0x00000005,0x44fc1288,0x160002a6,0x00030003,0x00210002,0x25001a48, +0x1e0002a4,0x00000000,0x00000001,0x25181e68,0x00000000,0x08070807,0x00000001,0x258c0608, +0x00000000,0x00a83000,0x00000001,0x45a01e88,0x00000000,0x00020002,0x00200001,0x25881248, +0x004504f8,0x00000000,0x00000001,0x46241e88,0x00000000,0x00880088,0x01000010,0x20002260, +0x1e0004fc,0x00030003,0x00000005,0x22ac1228,0x12000500,0x00000502,0x00400001,0x26381648, +0x00000000,0x7f7f7f7f,0x00000001,0x465e2288,0x000000a3,0x00000000,0x00200001,0x265c2288, +0x004500a1,0x00000000,0x00000001,0x26541648,0x00000000,0x00000000,0x00000001,0x46272288, +0x000005bd,0x00000000,0x00010002,0x23001a28,0x1e0002a4,0x00000000,0x01200010,0x20000a20, +0x1e4502b0,0x00000000,0x00000001,0x25c00208,0x000000c8,0x00000000,0x00000005,0x65040a88, +0x0a0002ac,0x00000300,0x00210002,0x22e01a48,0x1e0002a4,0x00000000,0x00200041,0x22e41248, +0x164502e0,0x00100010,0x00200040,0x22e01248,0x164504f8,0x00100010,0x00200040,0x23001228, +0x124504f8,0x004502e4,0x00200040,0x23200a28,0x1e450300,0x00100010,0x00000006,0x43022288, +0x1e0005bc,0x00010001,0x03200010,0x20000a20,0x12450320,0x00450020,0x00210002,0x23401a48, +0x1e0002a4,0x00000000,0x2203eb10,0x001a0007,0x00000001,0x22a61048,0x00000600,0x00000000, +0x03200010,0x20001240,0x124502e0,0x00450020,0x00000005,0x450c1288,0x160002a6,0x00030003, +0x00210002,0x22c01a48,0x1e0002a4,0x00000000,0x2203eb10,0x00160007,0x00000001,0x22a61048, +0x00000600,0x00000000,0x00000005,0x23001248,0x160002a6,0x00030003,0x03000010,0x20001260, +0x1e000300,0x00000000,0x00010001,0x45bc2288,0x00000302,0x00000000,0x01000010,0x20001260, +0x1e0004e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c8,0x20004d01,0x00001707, +0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0000, +0x00000001,0x22e41228,0x0000058a,0x00000000,0x00000040,0x22e01228,0x1e000588,0xffffffff, +0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00000040,0x22e01228,0x1e000588,0xfffcfffc, +0x00000040,0x22000204,0x060002a0,0x02190001,0x0000000c,0x22e41228,0x1600058a,0x00010001, +0x00000001,0x22e8060c,0x00000000,0x00070003,0x0c600031,0x23403a0c,0x000002e0,0x00000200, +0x00800001,0x26402288,0x00600300,0x00000000,0x00800001,0x26602288,0x00650342,0x00000000, +0x01000010,0x20001260,0x1e0004e8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c8, +0x00000040,0x22a41228,0x1e000588,0xfff8fff8,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02190000,0x20086001,0x1f001700,0x00000040,0x22e41228,0x1e00058a,0xffffffff, +0x0000000c,0x22c01228,0x1600058a,0x00010001,0x20144001,0x00151700,0x0c600031,0x26803a0c, +0x000002e0,0x00000200,0x00000040,0x22000204,0x060002a0,0x02190001,0x00000040,0x22e40a28, +0x1e0002c0,0xffffffff,0x0c600031,0x26a03a0c,0x000002e0,0x00000200,0x00400001,0x26280208, +0x00690688,0x00000000,0x00600001,0x26382288,0x00000637,0x00000000,0x00400001,0x26700208, +0x006906a8,0x00000000,0x02000010,0x20001260,0x1e0004e0,0x00000000,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x02010010,0x20001260,0x1e0004e8,0x00000000,0x00010002,0x22c01a28, +0x1e0002a4,0x00000000,0x01000010,0x20000a20,0x1e0002c0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000030,0x00200001,0x26542288,0x004506a6,0x00000000,0x00000001,0x46272288, +0x00000687,0x00000000,0x00000006,0x45bd2288,0x1e0005bd,0x00040004,0x00000005,0x22b01228, +0x160004e8,0x00010001,0x02000010,0x20001260,0x1e0004e8,0x00000000,0x00000040,0x22a41228, +0x160004e0,0x00010001,0x00000005,0x22ac1228,0x160004e0,0x00010001,0x00000001,0x22e01e68, +0x00000000,0x00010001,0x05010010,0x20000a20,0x120002a4,0x000004f0,0x00000040,0x22c00a28, +0x0a0002ac,0x000002b0,0x02010010,0x20000a20,0x1e0002c0,0x00020002,0x00010002,0x23001a28, +0x1e0002e0,0x00000000,0x01000010,0x20000a20,0x1e000300,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00200001,0x26380208,0x00450698,0x00000000,0x00000006,0x45bd2288, +0x1e0005bd,0x00080008,0x02000010,0x20002260,0x1e0004fc,0x00000000,0x00000006,0x45bd2288, +0x1e0005bd,0x00700070,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88, +0x00000000,0x000f000f,0x00000020,0x34000004,0x0e001400,0x00000090,0x02000010,0x20002260, +0x1e0004fc,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88, +0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260, +0x1e0004fc,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x44e21e88, +0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x44e21e88, +0x00000000,0x00030003,0x00000004,0x22a42228,0x000004e2,0x00000000,0x00000005,0x62c00a88, +0x1e0002a4,0x00ff00ff,0x00000001,0x26002244,0x000002c0,0x00000000,0x00618005,0x36001044, +0x168d1600,0x7fff7fff,0x00000009,0x22e00208,0x160004f4,0x00060006,0x00000040,0x22000204, +0x060002d0,0x02480400,0x00000040,0x251c0228,0x1e0002e0,0xffc0ffc0,0x03000002,0x251c0a28, +0x1e00051c,0x00000000,0x00000008,0x23080a08,0x1e00051c,0x00040004,0x0a800032,0x27403a6c, +0x00000300,0x00000200,0x00000040,0x23200228,0x120004f4,0x000044f0,0x00000041,0x23400a28, +0x1e000320,0x00400040,0x04000040,0x251c0a28,0x1e000340,0xffc0ffc0,0x00010020,0x34000004, +0x0e001400,0x00000070,0x00000040,0x22a40228,0x120004f4,0x000044f0,0x00000040,0x22000204, +0x060002d0,0x02280300,0x00000041,0x251c0a28,0x1e0002a4,0x00400040,0x03000002,0x251c0a28, +0x1e00051c,0x00000000,0x00000008,0x22e80a08,0x1e00051c,0x00040004,0x0a800031,0x27003a6c, +0x000002e0,0x00000200,0x00000020,0x34000004,0x0e001400,0x00000030,0x00000008,0x22e80a08, +0x1e00051c,0x00040004,0x00000040,0x22000204,0x060002d0,0x02480400,0x0a800031,0x26c03a6c, +0x000002e0,0x00000200,0x0020000c,0x23701208,0x16450724,0x00080008,0x0020000c,0x22b01208, +0x16400762,0x00040004,0x0020000c,0x23b01208,0x16450724,0x000c000c,0x0020000c,0x22f01208, +0x16400762,0x000c000c,0x03200010,0x20001260,0x1e4504e4,0x00000000,0x20005701,0x00302307, +0x00200005,0x63800288,0x16450370,0x000f000f,0x00200005,0x62c00288,0x164502b0,0x000f000f, +0x00200005,0x23c00208,0x164503b0,0x000f000f,0x00200005,0x23000208,0x164502f0,0x000f000f, +0x20005701,0x002c1f07,0x20005701,0x002e2107,0x00200001,0x23a02288,0x00600380,0x00000000, +0x00200001,0x22e02288,0x006002c0,0x00000000,0x00200009,0x22b00208,0x164503c0,0x00040004, +0x00200009,0x23200208,0x16450300,0x00040004,0x00000040,0x22000204,0x060002a8,0x10782000, +0x00800001,0x28a01608,0x00000000,0x00000000,0x00200006,0x62c02288,0x024503a0,0x004502b0, +0x00200006,0x63402288,0x024502e0,0x00450320,0x00200001,0x23622288,0x006002c0,0x00000000, +0x00200001,0x23602288,0x00600340,0x00000000,0x00210002,0x26501248,0x16450360,0x22222222, +0x06000010,0x20002260,0x1e000504,0x00000000,0x20005701,0x00322507,0x0d600031,0x27c03a0c, +0x000003e0,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000280,0x00000040,0x22a40208, +0x020006f4,0x00000734,0x01000010,0x20002260,0x1e000034,0x00000000,0x00000040,0x22c00208, +0x020002a4,0x00000774,0x00000040,0x252c0208,0x120002c0,0x000007cc,0x00010020,0x34000004, +0x0e001400,0x00000060,0x00600040,0x22e00208,0x168d0560,0x000a000a,0x00000001,0x25481608, +0x00000000,0x00040004,0x05000002,0x25400208,0x020007b4,0x0000052c,0x00000040,0x22000204, +0x060002bc,0x0210b700,0x00600009,0x23000208,0x168d02e0,0x00020002,0x0c600033,0x08e2a018, +0x00002301,0x00000000,0x04000010,0x20000200,0x020007b4,0x0000052c,0x00010020,0x34000004, +0x0e001400,0x000001b0,0x00000001,0x48cd1e88,0x00000000,0x00090009,0x00000040,0x22002240, +0x160007a0,0x05100510,0x00000001,0x48ad1e88,0x00000000,0x00010001,0x00000001,0x48ae2288, +0x0000078e,0x00000000,0x00000001,0x48ac2288,0x000008cd,0x00000000,0x00000006,0x22a42248, +0x1e008000,0x22202220,0x00000040,0x23e00208,0x120004f4,0x000044f0,0x00000005,0x42c02288, +0x1e0007a0,0x000f000f,0x00000001,0x28d40208,0x000007b4,0x00000000,0x00400001,0x28c01248, +0x000002a4,0x00000000,0x00000009,0x22a40208,0x160004f4,0x00060006,0x00000040,0x22000204, +0x060002d0,0x020a0400,0x00000009,0x24000208,0x160003e0,0x00060006,0x00400001,0x28c82288, +0x000002c0,0x00000000,0x00000040,0x22c00228,0x1e0002a4,0xffc0ffc0,0x00000040,0x24200228, +0x1e000400,0xffc0ffc0,0x20005601,0x00451b07,0x20005601,0x00451707,0x20005601,0x00451907, +0x00000008,0x24480a08,0x1e000420,0x00040004,0x00000001,0x48cc2288,0x000008ad,0x00000000, +0x00000008,0x24680a08,0x1e0002c0,0x00040004,0x0a800033,0x00017054,0x00002444,0x00000000, +0x20005601,0x00451d07,0x00000040,0x22000204,0x060002d0,0x020a0400,0x0a800033,0x0001b054, +0x00002464,0x00000000,0x0a600031,0x24803a08,0x06000000,0x0219e000,0x20004d01,0x00242407, +0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010,0x01000010,0x20002260, +0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0,0x03000010,0x20002260, +0x1e00050c,0x00000000,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00000005,0x22a41228, +0x12000500,0x00000502,0x00010002,0x22c01a28,0x1e0002ac,0x00000000,0x01000005,0x20000a20, +0x0a0002a4,0x000002c0,0x00010020,0x34000004,0x0e001400,0x00000060,0x00600040,0x22e00208, +0x168d0560,0x000a000a,0x00000001,0x25401208,0x000007cc,0x00000000,0x00000001,0x25481608, +0x00000000,0x00010001,0x00000040,0x22000204,0x060002bc,0x0210b700,0x00600009,0x23000208, +0x168d02e0,0x00020002,0x0c600033,0x08e2a018,0x00002301,0x00000000,0x02000005,0x44ea2288, +0x1e0007c0,0x00ff00ff,0x00000005,0x25302228,0x1e0007d8,0x00030003,0x00000001,0x25341608, +0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22001240, +0x16000530,0x05080508,0x00000001,0x24f21648,0x00000000,0x06060606,0x00400001,0x25342288, +0x00008000,0x00000000,0x00000001,0x48cc1e88,0x00000000,0x00010001,0x00000020,0x34000004, +0x0e001400,0x00000760,0x02000010,0x20002260,0x1e0004ea,0x00100010,0x00010020,0x34000004, +0x0e001400,0x00000260,0x00200040,0x22b01228,0x164504f8,0x00080008,0x00000001,0x22c01e68, +0x00000000,0x00010001,0x00200001,0x42a41688,0x00000000,0x00000000,0x00000001,0x48cc1e88, +0x00000000,0x00040004,0x00000040,0x22e81228,0x160004f8,0x00100010,0x00000040,0x22ac1228, +0x160004fa,0x00100010,0x00000001,0x42e01e88,0x00000000,0x00000000,0x04200010,0x20000a20, +0x124502b0,0x00450020,0x00000001,0x24f21648,0x00000000,0x03030303,0x00210002,0x42a41a88, +0x1e0002c0,0x00000000,0x00000040,0x42c22288,0x220002a4,0x000002a6,0x01000010,0x20002260, +0x1e0002c2,0x00010001,0x00010001,0x48cc1e88,0x00000000,0x00020002,0x01000010,0x20002260, +0x1e0002c2,0x00020002,0x00010001,0x48cc1e88,0x00000000,0x00010001,0x01000010,0x20001240, +0x120007d0,0x000007d2,0x01010010,0x20001240,0x120007d4,0x000007d6,0x00010002,0x22e41a28, +0x1e0002c0,0x00000000,0x05000010,0x20000a20,0x120002e8,0x000004ec,0x00010002,0x23001a28, +0x1e0002c0,0x00000000,0x05000010,0x20000a20,0x120002ac,0x000004ee,0x00000005,0x22a40a28, +0x0a0002e4,0x00000300,0x00010002,0x22c41a28,0x1e0002c0,0x00000000,0x00000005,0x22c80a28, +0x0a0002a4,0x000002c4,0x02000005,0x20000a20,0x1e0002c8,0x00010001,0x00010001,0x42e01e88, +0x00000000,0x00010001,0x01000010,0x20001240,0x120007d0,0x000007d4,0x01010010,0x20001240, +0x120007d2,0x000007d6,0x00010002,0x23041a28,0x1e0002c0,0x00000000,0x00000005,0x23200a28, +0x0a000304,0x00000300,0x00000005,0x23400a28,0x0a000320,0x000002c4,0x02000005,0x20000a20, +0x1e000340,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00010001,0x02000005,0x20002260, +0x160002e0,0x00010001,0x00010001,0x48cc1e88,0x00000000,0x00010001,0x02000005,0x20002260, +0x160002e0,0x00010001,0x00010001,0x44f31e88,0x00000000,0x00060006,0x00000020,0x34000004, +0x0e001400,0x000004e0,0x0060000c,0x22e02208,0x168d07d0,0x00040004,0x00600005,0x49002288, +0x1e8d07d0,0x000f000f,0x00000001,0x24f21648,0x00000000,0x00000000,0x00000001,0x25381608, +0x00000000,0x00000000,0x00600005,0x63000288,0x168d02e0,0x000f000f,0x00600001,0x49012288, +0x00600300,0x00000000,0x00000040,0x22001240,0x16000538,0x09000900,0x00000040,0x22a40208, +0x16000538,0x00010001,0x00000001,0x22ac2228,0x00008000,0x00000000,0x00000040,0x22001240, +0x160002a4,0x09000900,0x00600001,0x22c01648,0x00000000,0x00000000,0x01400010,0x20000a20, +0x220002ac,0x00208000,0x00000001,0x22d41e68,0x00000000,0x00010001,0x00410002,0x22c01a48, +0x1e0002d4,0x00000000,0x2203eb10,0x00160007,0x00000001,0x22e01048,0x00000600,0x00000000, +0x00000005,0x23001208,0x160002e0,0x00070007,0x06000010,0x20000200,0x16000300,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x22001240,0x16000538,0x09000900, +0x00000040,0x22002240,0x17e08000,0x05200520,0x00000001,0x42a42288,0x00008000,0x00000000, +0x0000000c,0x22ac0208,0x16000538,0x00020002,0x00000040,0x22001240,0x160002ac,0x05340534, +0x00000001,0xc0002288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000268, +0x00000040,0x22a40208,0x16000538,0x00010001,0x00000040,0x22ac0208,0x16000538,0x00020002, +0x00000040,0x22001240,0x160002a4,0x09000900,0x00000001,0x22c02228,0x00008000,0x00000000, +0x00000040,0x22001240,0x160002ac,0x09000900,0x00600001,0x22e01648,0x00000000,0x00000000, +0x01200010,0x20000a20,0x220002c0,0x00208000,0x00000001,0x22f01e68,0x00000000,0x00010001, +0x00210002,0x22e01a48,0x1e0002f0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048, +0x00000600,0x00000000,0x00000005,0x23201208,0x16000300,0x00030003,0x06000010,0x20000200, +0x16000320,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000080,0x00000040,0x22a40208, +0x16000538,0x00010001,0x00000040,0x22001240,0x160002a4,0x09000900,0x00000040,0x22002240, +0x17e08000,0x05200520,0x00000001,0x42c02288,0x00008000,0x00000000,0x0000000c,0x22c40208, +0x16000538,0x00020002,0x00000040,0x22001240,0x160002c4,0x05340534,0x00000001,0xc0002288, +0x000002c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000110,0x00000040,0x22a40208, +0x16000538,0x00020002,0x00000040,0x22001240,0x160002a4,0x09000900,0x02000010,0x20002220, +0x22008000,0x00008001,0x00010020,0x34000004,0x0e001400,0x00000080,0x00000040,0x22a40208, +0x16000538,0x00020002,0x00000040,0x22001240,0x160002a4,0x09000900,0x00000040,0x22002240, +0x17e08000,0x05200520,0x00000001,0x42c02288,0x00008000,0x00000000,0x0000000c,0x22c40208, +0x16000538,0x00020002,0x00000040,0x22001240,0x160002c4,0x05340534,0x00000001,0xc0002288, +0x000002c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22001240, +0x16000530,0x05080508,0x00000001,0x42a42288,0x00008000,0x00000000,0x0000000c,0x22ac0208, +0x16000538,0x00020002,0x00000040,0x22001240,0x160002ac,0x05340534,0x00000001,0xc0002288, +0x000002a4,0x00000000,0x00000040,0x25380208,0x16000538,0x00040004,0x05000010,0x20000200, +0x16000538,0x00100010,0x00010020,0x34000004,0x0e001400,0xfffffc30,0x00200040,0x22b01228, +0x164504f8,0x00080008,0x00000001,0x22c01e68,0x00000000,0x00010001,0x00200001,0x42a41688, +0x00000000,0x00000000,0x00000001,0x48cc1e88,0x00000000,0x00040004,0x04200010,0x20000a20, +0x124502b0,0x00450020,0x00210002,0x42a41a88,0x1e0002c0,0x00000000,0x00000040,0x42e02288, +0x220002a4,0x000002a6,0x01000010,0x20002260,0x1e0002e0,0x00010001,0x00010001,0x48cc1e88, +0x00000000,0x00020002,0x01000010,0x20002260,0x1e0002e0,0x00020002,0x00010001,0x48cc1e88, +0x00000000,0x00010001,0x00000009,0x22a40228,0x160004f4,0x00060006,0x00000001,0x48ac2288, +0x000004f2,0x00000000,0x00000040,0x22000204,0x060002d0,0x020a0300,0x00000001,0x28c80208, +0x00000534,0x00000000,0x00000001,0x48ae1e88,0x00000000,0x00000000,0x00400001,0x28c01248, +0x006907d0,0x00000000,0x00000001,0x28d41208,0x000007cc,0x00000000,0x00000001,0x48cd2288, +0x000004f3,0x00000000,0x00000008,0x22e80a08,0x1e0002a4,0x00040004,0x0a800033,0x00045054, +0x000022e2,0x00000000,0x0a600031,0x23003a08,0x06000000,0x0219e000,0x20004d01,0x00181807, +0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c, +0x00200040,0x22e01228,0x16450020,0x000f000f,0x00000005,0x22a6124c,0x16000006,0x07ff07ff, +0x00000005,0x22a4124c,0x16000004,0x07ff07ff,0x00200001,0x2c601248,0x00450020,0x00000000, +0x0020000c,0x43000a48,0x1e4502e0,0x00040004,0x00000005,0x24001260,0x160002a6,0x00010001, +0x00000008,0x25c21248,0x160002a6,0x00010001,0x00200001,0x287c1248,0x00400300,0x00000000, +0x00000048,0x25c01248,0x1e0002a4,0x00020002,0x00000001,0x25c41248,0x000005c2,0x00000000, +0x04000010,0x20001240,0x120005c0,0x0000087c,0x00200009,0x2c641248,0x164505c0,0x00040004, +0x00010020,0x34000004,0x0e001400,0x00006478,0x06000010,0x20002260,0x1e000025,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000c0,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002b8,0x02190000,0x20086001,0x00001700,0x00000001,0x22e41208,0x000005c4,0x00000000, +0x00000001,0x22e01228,0x000005c0,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00400001,0x2320228c,0x00690300,0x00000000,0x00000041,0x22a42228,0x1e000320,0x00100010, +0x00000040,0x22c80a28,0x1e0002a4,0x00200020,0x00000041,0x23401248,0x160002c8,0x00040004, +0x00000040,0x22001240,0x16000340,0x00200020,0x00600001,0x20a00208,0x00208000,0x00000000, +0x00600001,0x20c00208,0x00208020,0x00000000,0x0000004d,0x22a42208,0x00000026,0x00000000, +0x00600001,0x22e02648,0x00000000,0x76543210,0x00000040,0x22002240,0x16000026,0x05d005d0, +0x00800001,0x28201608,0x00000000,0x00000000,0x00800001,0x26801608,0x00000000,0x00000000, +0x00800001,0x28801608,0x00000000,0x00000000,0x00800001,0x28c01608,0x00000000,0x00000000, +0x00800001,0x29001608,0x00000000,0x00000000,0x00800001,0x29401608,0x00000000,0x00000000, +0x00800001,0x26c01608,0x00000000,0x00000000,0x00000001,0x25d40e28,0x00000000,0x390e0d03, +0x00000001,0x25d00e28,0x00000000,0x09020100,0x00000001,0x486c1e88,0x00000000,0x00010001, +0x00600001,0x2bc01e08,0x00000000,0x00000000,0x20106101,0xff0054f8,0x00000001,0x6c680288, +0x000002a4,0x00000000,0x00600001,0x2c801208,0x008d02e0,0x00000000,0x60004101,0x00044205, +0x00200001,0x28500208,0x00450090,0x00000000,0x20004b01,0x00034107,0x00000001,0x45c42288, +0x00008000,0x00000000,0x00000005,0x486e2288,0x1e0005c4,0x00030003,0x00000040,0x22c82228, +0x1e00086e,0xffffffff,0x00000041,0x23001248,0x160002c8,0x00020002,0x00000040,0x22001240, +0x16000300,0x00200020,0x00000001,0x25c61248,0x00008020,0x00000000,0x00000001,0x22ac12e8, +0x00000032,0x00000000,0x00000001,0x236412e8,0x00000030,0x00000000,0x00000001,0x22a422e8, +0x000000a0,0x00000000,0x00000009,0x23001228,0x1600087e,0x00020002,0x00000001,0x236022e8, +0x000000a0,0x00000000,0x02000010,0x20002260,0x1e000c68,0x00010001,0x00200001,0x28701648, +0x00000000,0x00000000,0x09000038,0x22e03ae8,0x3e0002ac,0x41200000,0x09000038,0x23803ae8, +0x3e000364,0x41200000,0x00000040,0x23a00a28,0x1e000300,0x000f000f,0x00000009,0x25c81228, +0x160005c0,0x00010001,0x00000001,0x28741648,0x00000000,0x00000000,0x00000041,0x23203ae8, +0x3a0002a4,0x000002e0,0x00000005,0x22a40a08,0x1e0003a0,0xfff0fff0,0x00000041,0x22c83ae8, +0x3a000360,0x00000380,0x00000001,0x43403a4c,0x00000320,0x00000000,0x00000001,0x23201e68, +0x00000000,0x00010001,0x0000000c,0x22e00208,0x160002a4,0x00040004,0x00000001,0x40303a48, +0x000002c8,0x00000000,0x00000001,0x20321248,0x00000340,0x00000000,0x00010002,0x22c81a28, +0x1e000320,0x00000000,0x00000009,0x25d80208,0x160002e0,0x00020002,0x01000005,0x20002220, +0x0a00002d,0x000002c8,0x00000040,0x25cc0228,0x120045d8,0x000005c2,0x00010020,0x34000004, +0x0e001400,0x00000078,0x00000041,0x22a40208,0x220005d8,0x0000086e,0x20004d01,0x00001707, +0x00000040,0x22000204,0x060002c4,0x02190000,0x20184001,0x002e1700,0x20086001,0x01001700, +0x00000040,0x22e40228,0x020002a4,0x000005cc,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00200001,0x2320124c,0x00450300,0x00000000,0x00000001,0x23801248,0x00000320,0x00000000, +0x06000010,0x20002260,0x1e000c68,0x00000000,0x00000001,0x45d41e88,0x00000000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000002d8,0x00000041,0x22a42228,0x1e0005d4,0x00020002, +0x00000041,0x23002248,0x160005d4,0x00020002,0x0000000c,0x22c82228,0x0a0005c4,0x000002a4, +0x00000040,0x22001240,0x16000300,0x0ba00ba0,0x00000005,0x22e00a28,0x1e0002c8,0x00030003, +0x00000040,0x25d00a28,0x1e0002e0,0xffffffff,0x00000001,0x4c6c0a68,0x000005d0,0x00000000, +0x00000001,0xa0001a68,0x00000c6c,0x00000000,0x00000040,0x23201a28,0x1e000c6c,0x00010001, +0x00000001,0x23401e68,0x00000000,0x00010001,0x00000040,0x25cc0228,0x020005cc,0x000005d8, +0x02000010,0x20000a20,0x22000320,0x0000086e,0x00010002,0x23601a28,0x1e000340,0x00000000, +0x01000005,0x20002220,0x0a00002d,0x00000360,0x00010020,0x34000004,0x0e001400,0x00000108, +0x00000041,0x22a41248,0x160005d0,0x00020002,0x00000040,0x22001240,0x160002a4,0x00200020, +0x00000001,0x22a61248,0x00008020,0x00000000,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002c4,0x02190000,0x00000001,0x22e4020c,0x000005cc,0x00000000,0x20184001,0x002e1700, +0x20086001,0x01001700,0x01000010,0x20001240,0x120005c6,0x000002a6,0x00000001,0x22c81e68, +0x00000000,0x00010001,0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00000040,0x22001240, +0x160002a4,0x08700870,0x00200001,0x2320124c,0x00450300,0x00000000,0x03010010,0x20001240, +0x12000320,0x00000380,0x05110010,0x20001240,0x120005c6,0x000002a6,0x00010002,0xa0001a48, +0x1e0002c8,0x00000000,0x03000010,0x20001220,0x1e008000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000b0,0x06000010,0x20002260,0x1e00002c,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000090,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002c0,0x02190000, +0x00000001,0x22e4020c,0x000005cc,0x00000000,0x20086001,0x03001700,0x00000041,0x22e00a28, +0x1e0005c8,0x00040004,0x00000041,0x22a41248,0x160005d0,0x00040004,0x0c600031,0x23003a0c, +0x000002e0,0x00000200,0x00000040,0x22001240,0x160002a4,0x08600860,0x00200001,0x23201a6c, +0x00450300,0x00000000,0x00000001,0xa0000208,0x00000320,0x00000000,0x00000040,0x45d42288, +0x1e0005d4,0x00010001,0x05000010,0x20002260,0x220005d4,0x00000c68,0x00010020,0x34000004, +0x0e001400,0xfffffd28,0x00200001,0x22b01e48,0x00000000,0x00010001,0x00200001,0x22e00208, +0x000005c0,0x00000000,0x00200001,0x22b41e48,0x00000000,0x00020002,0x00600001,0x23001648, +0x00000000,0x00000000,0x00000001,0x43b01e88,0x00000000,0x00020002,0x00000001,0x25d40e28, +0x00000000,0x5f004a00,0x00000001,0x25dc0e28,0x00000000,0xff000000,0x00000001,0x25d00e28, +0x00000000,0x1f050a00,0x00000001,0x25d80e28,0x00000000,0x3f250000,0x646fc110,0x151700ad, +0x00410002,0x23001a48,0x1e0002b0,0x00000000,0x2203eb10,0x00180007,0x00000001,0x22a41048, +0x00000600,0x00000000,0x00000005,0x22ac1208,0x160002a4,0x000f000f,0x00000040,0x22001240, +0x160002ac,0x05d005d0,0x00000001,0x48762288,0x00008000,0x00000000,0x00600001,0x22e02668, +0x00000000,0x33221100,0x20104101,0x002e6600,0x00000040,0x22000204,0x060002cc,0x02180200, +0x00000001,0x22c81648,0x00000000,0x00000000,0x02000005,0x20002260,0x1600002e,0x00010001, +0x00200001,0x23b01268,0x00450c64,0x00000000,0x00600001,0x23801648,0x00000000,0x00000000, +0x00800001,0x25e01608,0x00000000,0x00000000,0x00600040,0x2cd01a68,0x1a8d0cd0,0x008d42e0, +0x00200040,0x22e01268,0x12450020,0x00454c64,0x00010002,0x2c6a1248,0x160002c8,0x01000100, +0x00800001,0x26201608,0x00000000,0x00000000,0x00200001,0x26601648,0x00000000,0x00000000, +0x00600001,0x23a02648,0x00000000,0x00011011,0x00600001,0x2ca01a28,0x008d0cd0,0x00000000, +0x00200040,0x23b41a68,0x1e4502e0,0xfff0fff0,0x00600001,0x22e01648,0x00000000,0x00000000, +0x00400041,0x4cd01a68,0x1e400cd0,0x00100010,0x00400041,0x4ca40a28,0x12400ca4,0x0000087c, +0x00400041,0x23401a28,0x1e6903b0,0x00080008,0x00400041,0x4cd21a68,0x1e400cd2,0x00040004, +0x03600002,0x2ca00a28,0x1e8d0ca0,0x00000000,0x00400040,0x23b00a28,0x1e690340,0x00800080, +0x00600041,0x2ca00a28,0x1e8d0ca0,0x00400040,0x00200001,0x23b00a28,0x004543b0,0x00000000, +0x00600001,0x4b600a28,0x000003b8,0x00000000,0x00600001,0x4b640a28,0x000003bc,0x00000000, +0x00000040,0x22ac0a28,0x0a000ca0,0x00000ca4,0x00600001,0x4be00a28,0x000003b0,0x00000000, +0x00600001,0x4be40a28,0x000003b4,0x00000000,0x00000008,0x23080a08,0x1e0002ac,0x00040004, +0x0a600031,0x23203a0c,0x00000300,0x00000200,0x00200005,0x23001228,0x164505c0,0x00010001, +0x00200040,0x23101228,0x16450c64,0x00100010,0x03200010,0x20000a20,0x1e450300,0x00000000, +0x00210002,0x22e01a48,0x1e0002b0,0x00000000,0x2203eb10,0x00170007,0x00000001,0x22a41048, +0x00000600,0x00000000,0x06200010,0x20000a20,0x12450310,0x00450020,0x00000005,0x42ac1288, +0x160002a4,0x00030003,0x00210002,0x2c741a48,0x1e0002b0,0x00000000,0x01000010,0x20002260, +0x1e0002ac,0x00030003,0x00000005,0x22c81228,0x12000c74,0x00000c76,0x00010002,0x22d81a28, +0x1e0002b0,0x00000000,0x01200010,0x20000a20,0x1e450300,0x00000000,0x00000005,0x68780a88, +0x0a0002c8,0x000002d8,0x00210002,0x23201a48,0x1e0002b0,0x00000000,0x00200041,0x22e01248, +0x16450320,0x00100010,0x00200040,0x23401228,0x12450c64,0x004502e0,0x00200040,0x23600a28, +0x1e450340,0x00100010,0x03200010,0x20000a20,0x12450360,0x00450020,0x00210002,0x23801a48, +0x1e0002b0,0x00000000,0x2203eb10,0x001c0007,0x00000001,0x22a41048,0x00000600,0x00000000, +0x01000005,0x20002220,0x1e000878,0x00010001,0x00000005,0x4c701288,0x160002a4,0x00030003, +0x00000001,0x4d182288,0x00000324,0x00000000,0x00000001,0x2c400208,0x00000330,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000440,0x04200010,0x20001240,0x164505c0,0x00020002, +0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x22e01648,0x00000000,0x00000000, +0x00000001,0x25c40e28,0x00000000,0xff254a00,0x00210002,0x22e01a48,0x1e0002a4,0x00000000, +0x2203eb10,0x00170007,0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x23001208, +0x160002c8,0x00030003,0x00000040,0x22001240,0x16000300,0x05c405c4,0x00000001,0x4c6e2288, +0x00008000,0x00000000,0x00000040,0x23200a28,0x0a000ca8,0x00000cac,0x00000040,0x22000204, +0x060002cc,0x02180200,0x00200040,0x22b01268,0x12450020,0x00454c64,0x20104101,0x002e5d00, +0x00200040,0x23b01268,0x16450c64,0xfff0fff0,0x03600010,0x20001260,0x1e8d00b0,0x03ff03ff, +0x00600001,0x22f02648,0x00000000,0xfedcba98,0x00000008,0x23480a08,0x1e000320,0x00040004, +0x00200040,0x23b41a68,0x1e4502b0,0xfff0fff0,0x00600040,0x23001228,0x128d0bb0,0x008d43a0, +0x0a600031,0x23603a0c,0x00000340,0x00000200,0x00600001,0x23401248,0x008d00b0,0x00000000, +0x00400041,0x22e01a28,0x1e6903b0,0x00080008,0x00610001,0x23401648,0x00000000,0x03ff03ff, +0x00600009,0x43200a48,0x1e8d0300,0x00040004,0x00400040,0x23b00a28,0x1e6902e0,0x00800080, +0x00400040,0x22b01268,0x12690348,0x00694346,0x00600001,0x22e02648,0x00000000,0x76543210, +0x00600001,0x2bb01248,0x00400320,0x00000000,0x00000001,0x25e81248,0x00000346,0x00000000, +0x00000001,0x25e41248,0x00000344,0x00000000,0x00000001,0x26001248,0x0000034a,0x00000000, +0x00200001,0x23b00a28,0x004543b0,0x00000000,0x00600001,0x4b200a28,0x000003b8,0x00000000, +0x00400041,0x23201a28,0x120002b0,0x006902e0,0x00600040,0x23101a48,0x1e8d02e0,0x00180018, +0x00600040,0x23001a48,0x1e8d02e0,0x00100010,0x00800041,0x24c01a28,0x120002b6,0x008d02e0, +0x00600001,0x4ae00a28,0x000003b0,0x00000000,0x00800041,0x24001a28,0x120002b4,0x008d02e0, +0x00600001,0x4b240a28,0x000003bc,0x00000000,0x00800041,0x25001a28,0x120002b6,0x008d0300, +0x00600001,0x4ae40a28,0x000003b4,0x00000000,0x00600041,0x23a01a28,0x120002b2,0x008d02e0, +0x00000001,0x26201248,0x0000034c,0x00000000,0x0080000c,0x25400a28,0x1e8d04c0,0x00050005, +0x0080000c,0x24400a28,0x1e8d0400,0x00040004,0x0080000c,0x25800a28,0x1e8d0500,0x00050005, +0x00000001,0x25f01248,0x00000348,0x00000000,0x00000040,0x22a41228,0x120005e4,0x000005e8, +0x0060000c,0x23c00a28,0x1e8d03a0,0x00030003,0x00000001,0x25e01248,0x00000340,0x00000000, +0x00000001,0x26601248,0x0000034e,0x00000000,0x00000001,0x25e21248,0x00000342,0x00000000, +0x00800040,0x44801248,0x0a000600,0x008d0440,0x0000000c,0x42c80a4c,0x1e0002a4,0x00010001, +0x00600040,0x43e01248,0x0a0005f0,0x008d03c0,0x00800001,0x26001248,0x00400480,0x00000000, +0x00000001,0x25e61248,0x000002c8,0x00000000,0x00600001,0x25f01248,0x004003e0,0x00000000, +0x00000001,0x4cc82288,0x00000364,0x00000000,0x0040000c,0x23600a28,0x1e690320,0x00020002, +0x00000001,0x2ac00208,0x00000370,0x00000000,0x00800040,0x43201248,0x0a000620,0x008d0580, +0x00400040,0x43801248,0x0a0005e8,0x00690360,0x00800001,0x26401248,0x00400320,0x00000000, +0x00400001,0x25e81248,0x00400380,0x00000000,0x00800040,0x43601248,0x0a000620,0x008d0540, +0x00800001,0x26201248,0x00400360,0x00000000,0x00200001,0x22a42268,0x0045002a,0x00000000, +0x00200040,0x22b01228,0x164505c0,0x00010001,0x00600001,0x23000e08,0x00000000,0x00020001, +0x00000001,0x22c81e68,0x00000000,0x00010001,0x00600001,0x2d201e28,0x00000000,0x00000000, +0x00600001,0x2e800208,0x0000087c,0x00000000,0x00000001,0x48bc1e88,0x00000000,0x00040004, +0x20144b01,0x00157200,0x00200040,0x22a41248,0x16450c64,0x00100010,0x00800040,0x2e201a68, +0x1e8d4300,0x00ff00ff,0x00200040,0x23101228,0x1245087c,0x004545c0,0x00800041,0x2e801a68, +0x1e8d0e80,0x00100010,0x00800040,0x22e01a68,0x1e8d0e40,0xfff0fff0,0x03200010,0x20001240, +0x124502a4,0x00450020,0x00800040,0x23201a68,0x1e8d4e40,0x00050005,0x00800040,0x23a01a68, +0x1e8d0e80,0xffffffff,0x00800008,0x2de01a68,0x1e8d02e0,0x00010001,0x00200009,0x22e00a28, +0x1e4502b0,0x00070007,0x00800005,0x23601a68,0x1e8d0320,0xfffcfffc,0x00000006,0x43222288, +0x1e0008bc,0x00010001,0x00600001,0x29281648,0x00000000,0x7f7f7f7f,0x00600001,0x29401648, +0x00000000,0x81818181,0x20144b01,0x00636d00,0x00200001,0x23000a28,0x004542e0,0x00000000, +0x00600001,0x22e01648,0x00000000,0x00000000,0x00210002,0x22e01a48,0x1e0002c8,0x00000000, +0x00800040,0x2d801a68,0x1e8d0e40,0xfff0fff0,0x00200009,0x24200a28,0x1e450310,0x00070007, +0x00800005,0x23e01a68,0x1e8d03a0,0xfffcfffc,0x00400001,0x4d200a28,0x00000300,0x00000000, +0x2203eb10,0x00170007,0x00600001,0x2d401e28,0x00000000,0x00000000,0x00800001,0x2dc01e68, +0x00000000,0x00ff00ff,0x00800001,0x29702288,0x008d0928,0x00000000,0x00800001,0x29602288, +0x008d0940,0x00000000,0x00000001,0x23001048,0x00000600,0x00000000,0x00800040,0x2d601a68, +0x1a8d0360,0x008d4da0,0x00800040,0x2e001a68,0x1a8d0d80,0x008d4e20,0x00800040,0x2e601a68, +0x1a8d03e0,0x008d4da0,0x00000005,0x23201248,0x16000300,0x00030003,0x00400001,0x4d400a28, +0x00000420,0x00000000,0x00200001,0x28881248,0x00450c64,0x00000000,0x00000001,0x488e1e88, +0x00000000,0x00ac00ac,0x00000006,0x48a02288,0x1e0008a0,0x00030003,0x00400001,0x29381648, +0x00000000,0x7f7f7f7f,0x00000001,0x49271e88,0x00000000,0x00000000,0x03000010,0x20001260, +0x1e000320,0x00000000,0x00000001,0x49241e88,0x00000000,0x00880088,0x00000001,0x29541648, +0x00000000,0x00000000,0x00000001,0x488d1e88,0x00000000,0x00300030,0x00400001,0x4d240a28, +0x00000304,0x00000000,0x00400001,0x4d440a28,0x00000424,0x00000000,0x00010001,0x48bc2288, +0x00000322,0x00000000,0x01000010,0x20001260,0x1e0005c0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000c8,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000, +0x00000001,0x22e8060c,0x00000000,0x000f0000,0x00000001,0x22e41228,0x0000088a,0x00000000, +0x00000040,0x22e01228,0x1e000888,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00000040,0x22e01228,0x1e000888,0xfffcfffc,0x00000040,0x22000204,0x060002a0,0x02190001, +0x0000000c,0x22e41228,0x1600088a,0x00010001,0x00000001,0x22e8060c,0x00000000,0x00070003, +0x0c600031,0x23403a0c,0x000002e0,0x00000200,0x00800001,0x29402288,0x00600300,0x00000000, +0x00800001,0x29602288,0x00650342,0x00000000,0x01000010,0x20001260,0x1e0005c2,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000c8,0x00000040,0x22a41228,0x1e000888,0xfff8fff8, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x1f001700, +0x00000040,0x22e41228,0x1e00088a,0xffffffff,0x0000000c,0x22c81228,0x1600088a,0x00010001, +0x20144001,0x00151700,0x0c600031,0x23203a0c,0x000002e0,0x00000200,0x00000040,0x22000204, +0x060002a0,0x02190001,0x00000040,0x22e40a28,0x1e0002c8,0xffffffff,0x0c600031,0x22e03a0c, +0x000002e0,0x00000200,0x00400001,0x29280208,0x00690328,0x00000000,0x00600001,0x29382288, +0x00000937,0x00000000,0x00400001,0x29700208,0x006902e8,0x00000000,0x02000010,0x20001260, +0x1e0005c0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x02010010,0x20001260, +0x1e0005c2,0x00000000,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x01000010,0x20000a20, +0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000006,0x48bd2288, +0x1e0008bd,0x00040004,0x00000001,0x49272288,0x00000327,0x00000000,0x00200001,0x29542288, +0x004502e6,0x00000000,0x00000005,0x22b01228,0x160005c2,0x00010001,0x02000010,0x20001260, +0x1e0005c2,0x00000000,0x00000040,0x22a41228,0x160005c0,0x00010001,0x00000005,0x22ac1228, +0x160005c0,0x00010001,0x00000001,0x22e01e68,0x00000000,0x00010001,0x05010010,0x20000a20, +0x120002a4,0x0000087c,0x00000040,0x22c80a28,0x0a0002ac,0x000002b0,0x02010010,0x20000a20, +0x1e0002c8,0x00020002,0x00010002,0x23001a28,0x1e0002e0,0x00000000,0x01000010,0x20000a20, +0x1e000300,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000006,0x48bd2288, +0x1e0008bd,0x00080008,0x00200001,0x29380208,0x00450338,0x00000000,0x00200040,0x22a41248, +0x16450c64,0x00100010,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00600001,0x22e01648, +0x00000000,0x00000000,0x00000001,0x488f1e88,0x00000000,0x00700070,0x00000001,0x48a91e88, +0x00000000,0x00390039,0x00000005,0x23202228,0x1e0008a4,0x00c000c0,0x00200001,0x28cc0208, +0x004500c0,0x00000000,0x03200010,0x20001240,0x124502a4,0x00450020,0x00000001,0x495e2288, +0x000000a3,0x00000000,0x00000001,0x48ca2288,0x000000d2,0x00000000,0x00200001,0x28c82288, +0x004500d0,0x00000000,0x00000001,0x48a82288,0x000008a9,0x00000000,0x00000006,0x488e2288, +0x1e00088e,0x00040004,0x00000001,0x48a61e88,0x00000000,0x00200020,0x00210002,0x22e01a48, +0x1e0002ac,0x00000000,0x00200040,0x22ac2248,0x1e45002a,0xfff0fff0,0x00000001,0x48be1e88, +0x00000000,0x00400040,0x00000006,0x48bd2288,0x1e0008bd,0x00700070,0x00200001,0x29501e48, +0x00000000,0x22222222,0x00000001,0x48bf1e88,0x00000000,0x00010001,0x00200001,0x28c00208, +0x004500c8,0x00000000,0x2203eb10,0x00170007,0x00200005,0x22e41248,0x164505c0,0x00010001, +0x00000001,0x42e01e88,0x00000000,0x00000000,0x00200008,0x22a41248,0x164502ac,0x00030003, +0x00200001,0x295c2288,0x004500a1,0x00000000,0x00200001,0x28962288,0x0045002a,0x00000000, +0x00000006,0x68a40a88,0x1e000320,0x00200020,0x00000001,0x22c81048,0x00000600,0x00000000, +0x00000005,0x23001248,0x160002c8,0x00030003,0x00200005,0x22c81248,0x164502a4,0x000f000f, +0x03000010,0x20001260,0x1e000300,0x00000000,0x00000009,0x42d81288,0x160002ca,0x00040004, +0x00010001,0x488f1e88,0x00000000,0x00770077,0x05000010,0x20002260,0x1e000029,0x00390039, +0x00000006,0x48aa2288,0x120002d8,0x000002c8,0x00010001,0x48a82288,0x00000029,0x00000000, +0x01000010,0x20000200,0x160002e4,0x00000000,0x00010001,0x42e01e88,0x00000000,0x000f000f, +0x01000010,0x20000200,0x160002e4,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00010001, +0x01000010,0x20000200,0x060002e4,0x00010000,0x00010001,0x42e01e88,0x00000000,0x00020002, +0x01000010,0x20000200,0x060002e4,0x00010001,0x00010001,0x42e01e88,0x00000000,0x00030003, +0x00000004,0x22a42228,0x000002e0,0x00000000,0x00000005,0x62c80a88,0x1e0002a4,0x00ff00ff, +0x00000001,0x26002244,0x000002c8,0x00000000,0x00618005,0x36001044,0x168d1600,0x7fff7fff, +0x00000040,0x24000a28,0x0a000ca0,0x00000cb4,0x00000040,0x22000204,0x060002d0,0x02280300, +0x00800001,0x23801608,0x00000000,0x00000000,0x00800001,0x23001608,0x00000000,0x00000000, +0x00800001,0x23401608,0x00000000,0x00000000,0x00000008,0x24280a08,0x1e000400,0x00040004, +0x0a800032,0x23003a6c,0x00000420,0x00000200,0x00000040,0x22c80a28,0x0a000ca8,0x00000ca4, +0x00000040,0x24400a28,0x0a000ca0,0x00000cac,0x00000040,0x22a40a28,0x0a000cb0,0x00000ca4, +0x00000040,0x24000a28,0x0a000ca8,0x00000cac,0x00000001,0x2aa80208,0x00000318,0x00000000, +0x00000001,0x4d152288,0x00000304,0x00000000,0x00000001,0x2c340208,0x00000318,0x00000000, +0x00000008,0x25080a08,0x1e0002c8,0x00040004,0x00000008,0x22e80a08,0x1e000440,0x00040004, +0x00000008,0x24680a08,0x1e0002a4,0x00040004,0x00000040,0x22a40a28,0x0a000cb0,0x00000cb4, +0x00000001,0x487a1e88,0x00000000,0x00000000,0x00000001,0x4cc22288,0x00000304,0x00000000, +0x0a800031,0x24c03a6c,0x00000500,0x00000200,0x0a800031,0x23403a6c,0x000002e0,0x00000200, +0x0a800031,0x24803a6c,0x00000460,0x00000200,0x00000008,0x24480a08,0x1e0002a4,0x00040004, +0x00000008,0x22e80a08,0x1e000400,0x00040004,0x00000040,0x22000204,0x060002d0,0x02180200, +0x0a600031,0x24203a0c,0x000002e0,0x00000200,0x0a600031,0x24603a0c,0x00000440,0x00000200, +0x60104101,0x00261c05,0x60244101,0x00261d05,0x00200001,0x4d102288,0x00000344,0x00000000, +0x00200001,0x22c82288,0x00450342,0x00000000,0x60204101,0x00241d05,0x60004101,0x00241c05, +0x00200001,0x4c200208,0x00450358,0x00000000,0x00200001,0x4d112288,0x00000394,0x00000000, +0x00200001,0x22ca2288,0x00450390,0x00000000,0x00200001,0x4c240208,0x004003b4,0x00000000, +0x00000001,0x2aac0208,0x000003a4,0x00000000,0x00000001,0x2c380208,0x000003a4,0x00000000, +0x00000001,0x4cc32288,0x00000384,0x00000000,0x01000010,0x20002260,0x1e000d11,0x00000000, +0x00000001,0x4d142288,0x00000424,0x00000000,0x00000001,0x2c300208,0x0000043c,0x00000000, +0x00000001,0x4cc42288,0x00000464,0x00000000,0x00000001,0x2ab00208,0x0000047c,0x00000000, +0x00000001,0x4d172288,0x00000464,0x00000000,0x00000001,0x2c3c0208,0x0000047c,0x00000000, +0x03010010,0x20001260,0x1e0005c0,0x00000000,0x00000001,0x4d162288,0x00000384,0x00000000, +0x00010001,0x29501248,0x000002ca,0x00000000,0x01000010,0x20002260,0x1e000d10,0x00000000, +0x03010010,0x20001260,0x1e0005c2,0x00000000,0x00010001,0x29521248,0x000002c8,0x00000000, +0x06000010,0x20002260,0x1e000c68,0x00000000,0x00010020,0x34000004,0x0e001400,0x000018c0, +0x00000041,0x22a42248,0x1600087a,0x00020002,0x00000040,0x22001240,0x160002a4,0x0ba00ba0, +0x00000001,0x2c6c1a68,0x00008000,0x00000000,0x05000010,0x20000200,0x12000a94,0x00000032, +0x00000001,0x22e01e68,0x00000000,0x00010001,0x00000041,0x22c81a48,0x12000c6c,0x000000ae, +0x00800001,0x23801648,0x00000000,0x00000000,0x00400001,0x28b82288,0x00000c6c,0x00000000, +0x05110010,0x20000200,0x12000a90,0x00000032,0x00400040,0x23a01208,0x126900a8,0x000002c8, +0x00010002,0x23001a28,0x1e0002e0,0x00000000,0x02000010,0x20000a20,0x1e000300,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000017f0,0x00000040,0x22a41a28,0x1e000c6c,0x00040004, +0x00000040,0x22001240,0x160002a4,0x06e006e0,0x00000001,0xc0001e88,0x00000000,0x00010001, +0x00000040,0x22c81a28,0x1e000c6c,0x00010001,0x03000010,0x20002260,0x1e000028,0x00000000, +0x00000001,0x22d81e68,0x00000000,0x00080008,0x00000006,0x22e21248,0x22000c6a,0x00000876, +0x20005601,0x00611807,0x20005601,0x00611a07,0x01010010,0x20002220,0x0a00086e,0x000002c8, +0x00000001,0x62e00a88,0x000002c8,0x00000000,0x00600001,0x2ce01e08,0x00000000,0x00000000, +0x00010002,0x43b01a88,0x1e0002d8,0x00020002,0x01800010,0x20002260,0x228d0d10,0x000002e0, +0x00000001,0x22a41048,0x00000600,0x00000000,0x02800010,0x20002260,0x1e8d0d10,0x00000000, +0x00000005,0x23b41248,0x120002e2,0x000002a4,0x00000001,0x22a41048,0x00000600,0x00000000, +0x00000005,0x23b61248,0x120002e2,0x000002a4,0x0000004c,0x23b80208,0x000003b4,0x00000000, +0x03000010,0x20000200,0x160003b8,0x00180018,0x00010020,0x34000004,0x0e001400,0x00000520, +0x00000041,0x22a41248,0x160003b8,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300, +0x00000001,0x2ce00208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce0, +0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce0, +0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8, +0x0000004c,0x22c00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018, +0x00010020,0x34000004,0x0e001400,0x00000470,0x00000041,0x22a41248,0x160002c0,0x00040004, +0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2ce40208,0x00008000,0x00000000, +0x01000010,0x20002260,0x1e0003b0,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000420, +0x02800010,0x20000220,0x028d0c20,0x00000ce4,0x00000001,0x22a41048,0x00000600,0x00000000, +0x02800010,0x20000220,0x028d0c20,0x00000ce4,0x00000001,0x22a61048,0x00000600,0x00000000, +0x00000005,0x23b40208,0x020003b4,0x000002a4,0x0000004c,0x23b00208,0x000003b4,0x00000000, +0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x000003a0, +0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300, +0x00000001,0x2ce80208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce8, +0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000ce8, +0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8, +0x0000004c,0x23b00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160003b0,0x00180018, +0x00010020,0x34000004,0x0e001400,0x000002f0,0x00000041,0x22a41248,0x160003b0,0x00040004, +0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cec0208,0x00008000,0x00000000, +0x02800010,0x20000220,0x028d0c20,0x00000cec,0x00000001,0x22c81048,0x00000600,0x00000000, +0x02800010,0x20000220,0x028d0c20,0x00000cec,0x00000001,0x22ca1048,0x00000600,0x00000000, +0x00000005,0x23b40208,0x020003b4,0x000002c8,0x0000004c,0x23b00208,0x000003b4,0x00000000, +0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x00000240, +0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300, +0x00000001,0x2cf00208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf0, +0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf0, +0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8, +0x0000004c,0x23b00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160003b0,0x00180018, +0x00010020,0x34000004,0x0e001400,0x00000190,0x00000041,0x22a41248,0x160003b0,0x00040004, +0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cf40208,0x00008000,0x00000000, +0x02800010,0x20000220,0x028d0c20,0x00000cf4,0x00000001,0x22c81048,0x00000600,0x00000000, +0x02800010,0x20000220,0x028d0c20,0x00000cf4,0x00000001,0x22ca1048,0x00000600,0x00000000, +0x00000005,0x23b40208,0x020003b4,0x000002c8,0x0000004c,0x23b00208,0x000003b4,0x00000000, +0x03000010,0x20000200,0x160003b0,0x00180018,0x00010020,0x34000004,0x0e001400,0x000000e0, +0x00000041,0x22a41248,0x160003b0,0x00040004,0x00000040,0x22001240,0x160002a4,0x03000300, +0x00000001,0x2cf80208,0x00008000,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf8, +0x00000001,0x22c81048,0x00000600,0x00000000,0x02800010,0x20000220,0x028d0c20,0x00000cf8, +0x00000001,0x22ca1048,0x00000600,0x00000000,0x00000005,0x23b40208,0x020003b4,0x000002c8, +0x0000004c,0x22c00208,0x000003b4,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018, +0x00010020,0x34000004,0x0e001400,0x00000030,0x00000041,0x22a41248,0x160002c0,0x00040004, +0x00000040,0x22001240,0x160002a4,0x03000300,0x00000001,0x2cfc0208,0x00008000,0x00000000, +0x04800002,0x42e00a68,0x1a8d0be0,0x008d0ce0,0x00000040,0x22000204,0x060002a8,0x10782000, +0x00800001,0x2ce01a68,0x004002e0,0x00000000,0x06800002,0x43200a68,0x1a8d0b60,0x008d0ce0, +0x00800001,0x2ce01a68,0x00400320,0x00000000,0x0000000c,0x22c81a28,0x1e000ce2,0x00010001, +0x0000000c,0x22a41a28,0x1e000ce0,0x00010001,0x0020000c,0x29001a68,0x1e450ce0,0x00010001, +0x00200001,0x23801a68,0x00450ce0,0x00000000,0x00000001,0x43600a6c,0x000002c8,0x00000000, +0x00400001,0x68e00a68,0x000002a4,0x00000000,0x00400001,0x68e21a68,0x00000360,0x00000000, +0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x23a80208,0x120003a8,0x00000988, +0x00200001,0x23901248,0x00450988,0x00000000,0x04000010,0x20000200,0x020003a8,0x00000a94, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00200001,0x2a681648,0x00000000,0x0a0a0a0a, +0x20004b01,0x004c7507,0x00000040,0x4a641a88,0x1e000c6c,0x00010001,0x20104101,0x004d5300, +0x00000001,0x2a940208,0x000003a8,0x00000000,0x01000010,0x20002260,0x1e00086c,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000070,0x0000000c,0x22a42228,0x16000980,0x00040004, +0x00000005,0x4a882288,0x1e000998,0x00030003,0x00000001,0x486c1e88,0x00000000,0x00000000, +0x00400001,0x2a801248,0x00690990,0x00000000,0x00000001,0x2a901208,0x0000098c,0x00000000, +0x00000001,0x49251e88,0x00000000,0x00020002,0x00000005,0x6a6d0a88,0x1e0002a4,0x00030003, +0x01000010,0x20000200,0x02000ce0,0x00000ce4,0x00010020,0x34000004,0x0e001400,0x000000d0, +0x0020000c,0x29001a68,0x1e450ce4,0x00010001,0x00000040,0x22000204,0x060002a8,0x10782000, +0x00200001,0x23841a68,0x00450ce4,0x00000000,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000040,0x23a40208,0x120003a4,0x00000988,0x00200001,0x23941248,0x00450988,0x00000000, +0x04000010,0x20000200,0x020003a4,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000080, +0x00200001,0x2a681648,0x00000000,0x0b0b0b0b,0x20004b01,0x004c7507,0x00000040,0x4a641a88, +0x1e000c6c,0x00010001,0x20104101,0x004d5300,0x00000001,0x2a940208,0x000003a4,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x22a41a28,0x1e000c6c,0x00080008, +0x00000040,0x22001240,0x160002a4,0x06e006e0,0x00000001,0xc0001e88,0x00000000,0x00010001, +0x02000010,0x20000200,0x16000ce0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x02010010,0x20000200,0x16000ce4,0x00000000,0x00010002,0x22c81a28,0x1e0002a4,0x00000000, +0x01000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000c0, +0x00200001,0x29001e68,0x00000000,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000, +0x00200001,0x23881a68,0x00450900,0x00000000,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000040,0x23a00208,0x120003a0,0x00000988,0x00200001,0x23981248,0x00450988,0x00000000, +0x04000010,0x20000200,0x020003a0,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00200001,0x2a681648,0x00000000,0x0c0c0c0c,0x20004b01,0x004c7507,0x00000040,0x4a641a88, +0x1e000c6c,0x00010001,0x20104101,0x004d5300,0x00000001,0x2a940208,0x000003a0,0x00000000, +0x00000041,0x22a41a28,0x1e000c6c,0x00020002,0x00000041,0x22c81248,0x160002a4,0x00100010, +0x00000040,0x22001240,0x160002c8,0x06800680,0x00600001,0xa0000208,0x008d0380,0x00000000, +0x0000000c,0x22e01208,0x16000030,0x00010001,0x05000010,0x20000200,0x12000a94,0x00000030, +0x00000001,0x23001e68,0x00000000,0x00010001,0x05110010,0x20000200,0x02000a90,0x000002e0, +0x00010002,0x23201a28,0x1e000300,0x00000000,0x02000010,0x20000a20,0x1e000320,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000cb0,0x00000041,0x22a41a48,0x1e000c6c,0x00020002, +0x00000040,0x22001240,0x160002a4,0x08700870,0x02000005,0x20002220,0x1200002d,0x00008000, +0x00010020,0x34000004,0x0e001400,0x00000c40,0x00000041,0x22a41a48,0x1e000c6c,0x00040004, +0x00200008,0x287c1a68,0x1e450ce0,0x00010001,0x00200001,0x2d001608,0x00000000,0x00000000, +0x00000040,0x22001240,0x160002a4,0x08600860,0x00200001,0x22b01a68,0x0045087c,0x00000000, +0x00000001,0x22b40208,0x00008000,0x00000000,0x00200001,0x22e00208,0x000002b0,0x00000000, +0x00400008,0x22f01a68,0x1e6902b0,0x00020002,0x0040000c,0x22e01a68,0x1e6902e0,0x00020002, +0x00400040,0x2ec01a68,0x1a6902f0,0x00694de0,0x00400040,0x23101a68,0x1a6902e0,0x00694e20, +0x00400040,0x23001a68,0x1a690ec0,0x006942e0,0x00400040,0x23201a68,0x1a6902e0,0x00694e00, +0x00000001,0x22e01e68,0x00000000,0x00010001,0x06400010,0x20001a60,0x1a690300,0x00694dc0, +0x00400040,0x23301a28,0x1a690300,0x00690d80,0x00410001,0x2ec01a68,0x00690310,0x00000000, +0x04400010,0x20000a20,0x1a690330,0x00690dc0,0x00410001,0x2ec01a68,0x00690320,0x00000000, +0x00400040,0x23401a68,0x1a690ec0,0x00690da0,0x06400040,0x20001a20,0x1a690340,0x00690e40, +0x00410001,0x2ec01a68,0x00690d60,0x00000000,0x04400010,0x20001a60,0x1a690340,0x00690e80, +0x00410001,0x2ec01a68,0x00690e60,0x00000000,0x00200040,0x22a41a68,0x1a450ec4,0x00454ec0, +0x00200001,0x22c81a48,0x004522a4,0x00000000,0x05000010,0x20001260,0x1e0002c8,0x00070007, +0x05010010,0x20001260,0x1e0002ca,0x00070007,0x01110010,0x20002260,0x1e00002c,0x00000000, +0x00010002,0x4c781a88,0x1e0002e0,0x00000000,0x01000005,0x20002220,0x1e000c78,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000130,0x00200001,0x28801a68,0x00450ec0,0x00000000, +0x00200001,0x23001e68,0x00000000,0x00000000,0x20005701,0x00461b07,0x20005701,0x00411d07, +0x00000040,0x22000204,0x060002a8,0x0c98c000,0x20005701,0x00441907,0x00200001,0x22e01a68, +0x00450880,0x00000000,0x00800001,0x23801a48,0x008d08e0,0x00000000,0x00000001,0x2324020c, +0x00000300,0x00000000,0x20005701,0x00462107,0x00000005,0x432d228c,0x1600032d,0x00f800f8, +0x20004001,0x00171900,0x20005701,0x00441f07,0x00000006,0x432d228c,0x1600032d,0x00000000, +0x08600031,0x27003a0c,0x00000320,0x00000200,0x00000040,0x22000204,0x060002a8,0x10786000, +0x20005601,0x00392307,0x00000005,0x44342288,0x1e000700,0x00030003,0x20005601,0x003b2507, +0x00000001,0x4435228c,0x00000719,0x00000000,0x00000001,0x4436228c,0x0000071a,0x00000000, +0x0d600031,0x29803a0c,0x000003e0,0x00000200,0x00000020,0x34000004,0x0e001400,0x00000280, +0x00200001,0x28801a68,0x00450ec0,0x00000000,0x00200001,0x23001e68,0x00000000,0x00000000, +0x20005701,0x00461b07,0x20005701,0x00411d07,0x00000040,0x22000204,0x060002a8,0x0c98c000, +0x20005701,0x00441907,0x00200001,0x22e01a68,0x00450880,0x00000000,0x00800001,0x23801a48, +0x008d08e0,0x00000000,0x00000001,0x2324020c,0x00000300,0x00000000,0x20005701,0x00441f07, +0x00000005,0x432d228c,0x1600032d,0x00f800f8,0x20004001,0x00171900,0x00200001,0x28801a68, +0x00450ec4,0x00000000,0x20005701,0x00462107,0x00200001,0x23001e68,0x00000000,0x00000000, +0x20005701,0x00462907,0x00000006,0x432d228c,0x1600032d,0x00000000,0x20005701,0x00442707, +0x00200001,0x22e01a68,0x00450880,0x00000000,0x20005601,0x00412b07,0x00800001,0x25401a48, +0x008d08e0,0x00000000,0x08600031,0x27003a0c,0x00000320,0x00000200,0x00000040,0x22000204, +0x060002a8,0x10786000,0x00000005,0x44ed228c,0x160004ed,0x00f800f8,0x00000001,0x24e4020c, +0x00000300,0x00000000,0x20004001,0x00172700,0x20005701,0x00461b07,0x20005701,0x00441907, +0x00000006,0x44ed228c,0x160004ed,0x00000000,0x00000001,0x4436228c,0x0000071a,0x00000000, +0x20005601,0x00392307,0x00000005,0x44342288,0x1e000700,0x00030003,0x20005601,0x003b2507, +0x00000001,0x4435228c,0x00000719,0x00000000,0x20005601,0x003f2d07,0x0d600031,0x29803a0c, +0x000003e0,0x00000200,0x00000040,0x22000204,0x060002a8,0x1099c000,0x08600031,0x27003a0c, +0x000004e0,0x00000200,0x00000040,0x22000204,0x060002a8,0x10786000,0x20005601,0x00391d07, +0x00000005,0x43742288,0x1e000700,0x00030003,0x20005601,0x003b1f07,0x00000001,0x4375228c, +0x00000719,0x00000000,0x00000001,0x4376228c,0x0000071a,0x00000000,0x0d600031,0x24203a0c, +0x00000320,0x00000200,0x04000010,0x20001240,0x12000428,0x00000988,0x00010020,0x34000004, +0x0e001400,0x00000018,0x20005601,0x00255007,0x20005601,0x00234e07,0x20005601,0x00214c07, +0x04000010,0x20001200,0x02000988,0x00000a94,0x00010020,0x34000004,0x0e001400,0x00000058, +0x00200001,0x2a780208,0x008009e0,0x00000000,0x00000001,0x2a941208,0x00000988,0x00000000, +0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x00000040,0x4a641a88,0x1e000c6c,0x00010001, +0x00200001,0x2a700208,0x008009a0,0x00000000,0x20004b01,0x004c7507,0x00000040,0x22a41a28, +0x1e000c6c,0x00010001,0x03000010,0x20002260,0x1e000028,0x00000000,0x00000001,0x22c81e68, +0x00000000,0x00010001,0x01010010,0x20002220,0x0a00086e,0x000002a4,0x00010002,0x22e01a28, +0x1e0002c8,0x00000000,0x01000010,0x20000a20,0x1e0002e0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000005a8,0x00200040,0x22a42268,0x1e45002a,0xfff0fff0,0x0080000c,0x23201a68, +0x1e8d0ce0,0x00030003,0x00000001,0x43801e8c,0x00000000,0x00010001,0x00200008,0x22c81a68, +0x1e4502a4,0x00010001,0x00200040,0x22e01a68,0x1a450ec0,0x004502c8,0x20004b01,0x00171800, +0x00800040,0x23401a68,0x1a8d0300,0x008d4320,0x00800001,0x23601a48,0x008d2340,0x00000000, +0x05600010,0x20001260,0x1e400360,0x00070007,0x05610010,0x20001260,0x1e400362,0x00070007, +0x00610001,0x2d002288,0x00000380,0x00000000,0x02000010,0x20002260,0x1e000c78,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000a8,0x00200040,0x22a42268,0x1e45002a,0xfff0fff0, +0x0080000c,0x23201a68,0x1e8d0ce0,0x00030003,0x00000001,0x43801e8c,0x00000000,0x00010001, +0x00200008,0x22c81a68,0x1e4502a4,0x00010001,0x00200040,0x22e01a68,0x1a450ec4,0x004502c8, +0x20004b01,0x00171800,0x00800040,0x23401a68,0x1a8d0300,0x008d4320,0x00800001,0x23601a48, +0x008d2340,0x00000000,0x05600010,0x20001260,0x1e400360,0x00070007,0x05610010,0x20001260, +0x1e400362,0x00070007,0x00610001,0x2d002288,0x00000380,0x00000000,0x0080000c,0x22e01a68, +0x1e8d0ce0,0x00010001,0x00200001,0x22a41a68,0x0045087c,0x00000000,0x00000001,0x4c721e88, +0x00000000,0x00000000,0x00000001,0x487c1e88,0x00000000,0x00010001,0x00800008,0x23201a68, +0x1e8d02e0,0x00020002,0x20144b01,0x00151800,0x00800040,0x25c01a68,0x1a8d0320,0x008d4de0, +0x0080000c,0x23001a68,0x1e8d0300,0x00020002,0x00800040,0x23401a68,0x1a8d05c0,0x008d4300, +0x00800040,0x23601a68,0x1a8d0300,0x008d4e20,0x00800040,0x23a01a68,0x1a8d0300,0x008d4e00, +0x06800010,0x20001a60,0x1e8d0340,0xff01ff01,0x00800040,0x23e01a28,0x1a8d0340,0x008d0d80, +0x00810001,0x25c01a68,0x008d0360,0x00000000,0x04800010,0x20000a20,0x1e8d03e0,0x00ff00ff, +0x00810001,0x25c01a68,0x008d03a0,0x00000000,0x00800040,0x24201a68,0x1a8d05c0,0x008d0da0, +0x06800040,0x20001a20,0x1a8d0420,0x008d0e40,0x00810001,0x25c01a68,0x008d0d60,0x00000000, +0x04800010,0x20001a60,0x1a8d0420,0x008d0e80,0x00810001,0x25c01a68,0x008d0e60,0x00000000, +0x00000040,0x22002240,0x1600087c,0x0d000d00,0x02000010,0x20002220,0x1e008000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000290,0x04000010,0x20002260,0x22000c72,0x00000028, +0x00010020,0x34000004,0x0e001400,0x000002a0,0x00000041,0x22a42248,0x1600087c,0x00040004, +0x00000040,0x4c722288,0x1e000c72,0x00010001,0x00000040,0x22001240,0x160002a4,0x05c005c0, +0x00000001,0x28800208,0x00008000,0x00000000,0x20005701,0x00442007,0x00200001,0x23c01a68, +0x00450880,0x00000000,0x00200001,0x23e01e68,0x00000000,0x00000000,0x20005701,0x00462207, +0x00000040,0x22000204,0x060002a8,0x0c98c000,0x00000005,0x440d228c,0x1600040d,0x00f800f8, +0x20005701,0x00412407,0x20004001,0x001e2000,0x00000001,0x2404020c,0x000003e0,0x00000000, +0x00800001,0x24601a48,0x008d08e0,0x00000000,0x00000006,0x440d228c,0x1600040d,0x00000000, +0x20005701,0x00462807,0x20005701,0x00442607,0x00200040,0x22c82268,0x1e45002a,0xfff0fff0, +0x0080000c,0x23401a68,0x1e8d0ce0,0x00030003,0x08600031,0x27003a0c,0x00000400,0x00000200, +0x00000040,0x22000204,0x060002a8,0x10786000,0x00000001,0x43a01e8c,0x00000000,0x00010001, +0x00200008,0x22e01a68,0x1e4502c8,0x00010001,0x00200040,0x23001a68,0x1a450880,0x004502e0, +0x20004b01,0x00181900,0x00000001,0x4515228c,0x00000719,0x00000000,0x00000001,0x4516228c, +0x0000071a,0x00000000,0x20005601,0x00392a07,0x00000005,0x45142288,0x1e000700,0x00030003, +0x20005601,0x003b2c07,0x00800040,0x23601a68,0x1a8d0320,0x008d4340,0x0d600031,0x29803a0c, +0x000004c0,0x00000200,0x00800001,0x23801a48,0x008d2360,0x00000000,0x05600010,0x20001260, +0x1e400380,0x00070007,0x05610010,0x20001260,0x1e400382,0x00070007,0x00610001,0x2d002288, +0x000003a0,0x00000000,0x04000010,0x20001200,0x02000988,0x00000a94,0x00010020,0x34000004, +0x0e001400,0x00000058,0x00200001,0x2a780208,0x008009e0,0x00000000,0x00000001,0x2a941208, +0x00000988,0x00000000,0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x00000040,0x4a641a88, +0x1e000c6c,0x00010001,0x00200001,0x2a700208,0x008009a0,0x00000000,0x20004b01,0x004c7507, +0x00000040,0x487c2288,0x1e00087c,0x00010001,0x05000010,0x20002260,0x1e00087c,0x00080008, +0x00010020,0x34000004,0x0e001400,0xfffffd10,0x00000040,0x487a2288,0x1e00087a,0x00010001, +0x05000010,0x20002260,0x2200087a,0x00000c68,0x00010020,0x34000004,0x0e001400,0xffffe740, +0x02000005,0x4a6c2288,0x1e000ea0,0x00030003,0x00200001,0x2a981208,0x00450ea8,0x00000000, +0x00600009,0x2a701a68,0x1e8d0a70,0x00010001,0x00010020,0x34000004,0x0e001400,0x000001a0, +0x00000040,0x2c6c2268,0x1e000a64,0xffffffff,0x00000041,0x22a41a28,0x1e000c6c,0x00020002, +0x00000041,0x22c81248,0x160002a4,0x00100010,0x00000040,0x22001240,0x160002c8,0x06800680, +0x00000040,0x22021240,0x160002c8,0x06800680,0x02000010,0x20000200,0x02000a70,0x00008000, +0x02010010,0x20000200,0x02000a70,0x00008204,0x02010010,0x20000200,0x16000a70,0x00000000, +0x00000001,0x22e01e68,0x00000000,0x00010001,0x00010002,0x23001a28,0x1e0002e0,0x00000000, +0x01000010,0x20000a20,0x1e000300,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000190, +0x00000041,0x22a41a28,0x1e000c6c,0x00020002,0x0020000c,0x29001a68,0x1e450a70,0x00010001, +0x00000040,0x22000204,0x060002a8,0x10782000,0x00400001,0x28b82288,0x00000c6c,0x00000000, +0x00000041,0x22ac1248,0x160002a4,0x00100010,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000040,0x22001240,0x160002ac,0x06800680,0x00200001,0xa00c1a68,0x00450a70,0x00000000, +0x00000040,0x22c80a28,0x1e0002a4,0x00010001,0x00000041,0x22e01248,0x160002c8,0x00100010, +0x00000040,0x22001240,0x160002e0,0x06800680,0x00200001,0xa00c1248,0x00450988,0x00000000, +0x00000001,0x2a9c1208,0x0000098a,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000b0, +0x00000040,0x42a42288,0x1e000a64,0xffffffff,0x00400001,0x49000208,0x00690a70,0x00000000, +0x00000001,0x48bf1e88,0x00000000,0x00550055,0x00000006,0x488d2288,0x1e00088d,0x00400040, +0x00000040,0x22000204,0x060002a8,0x10782000,0x00400001,0x28b82288,0x000002a4,0x00000000, +0x0080000c,0x29001a68,0x1e8d0900,0x00010001,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000001,0x48bf1e88,0x00000000,0x00010001,0x00000005,0x488d2288,0x1e00088d,0x00bf00bf, +0x00000001,0x2a9c1208,0x0000098a,0x00000000,0x04000010,0x20000200,0x02000a90,0x00000a94, +0x00010020,0x34000004,0x0e001400,0x00000090,0x00000041,0x22a42228,0x1e000a6d,0x00030003, +0x00000001,0x2a681608,0x00000000,0x00000000,0x00000001,0x46ec1e88,0x00000000,0x00000000, +0x00600001,0x2a701e68,0x00000000,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00000000, +0x00000001,0x4a641e88,0x00000000,0x00000000,0x00000001,0x26e00208,0x00000a90,0x00000000, +0x00000040,0x6a6d0a88,0x1e0042a4,0x00060006,0x00000020,0x34000004,0x0e001400,0x000001a0, +0x02000010,0x20002260,0x1e000a6c,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000048,0x01000010,0x20000200,0x06000c74,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000028,0x00000001,0x4a6c1e88,0x00000000,0x00030003, +0x20244101,0x00535300,0x00200001,0x2a681648,0x00000000,0x0d0d0d0d,0x01000010,0x20002260, +0x1e000a6c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000098,0x01400010,0x20000200, +0x16690a70,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x22e01648, +0x00000000,0x00000000,0x00000001,0x43001e8c,0x00000000,0x000c000c,0x00200001,0x2a681648, +0x00000000,0x0d0d0d0d,0x00410002,0x22e01a48,0x1e0002a4,0x00000000,0x2203eb10,0x00170007, +0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x26001240,0x160002c8,0x000f000f, +0x00410001,0x2a682288,0x00000300,0x00000000,0x04600002,0x42e00a68,0x1a8d0d20,0x008d0a70, +0x00000040,0x4a6c2288,0x1e004a6c,0x00060006,0x00000001,0x46ec2288,0x00000a64,0x00000000, +0x00000001,0x26e00208,0x00000a94,0x00000000,0x00600001,0x2a701a68,0x004002e0,0x00000000, +0x06600002,0x43000a68,0x1a8d0d40,0x008d0a70,0x00600001,0x2a701a68,0x00400300,0x00000000, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002d4,0x020a8000,0x00000001,0x22e8060c, +0x00000000,0x0007000f,0x00000041,0x22e41a28,0x1e000cd2,0x00020002,0x00000001,0x22e01a28, +0x00000cd0,0x00000000,0x01000005,0x20002220,0x1e000878,0x00010001,0x00000001,0x4c781e88, +0x00000000,0x00000000,0x0c600033,0x00034014,0x000022e4,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00002090,0x00000040,0x23a00a28,0x0a000cb8,0x00000cac,0x00000040,0x22c80a28, +0x0a000ca8,0x00000cb4,0x00000040,0x24600a28,0x0a000cb0,0x00000cac,0x00000040,0x22a40a28, +0x0a000ca8,0x00000cbc,0x00000040,0x22000204,0x060002d0,0x02280300,0x00000008,0x23c80a08, +0x1e0003a0,0x00040004,0x00000008,0x23880a08,0x1e0002c8,0x00040004,0x00000008,0x24880a08, +0x1e000460,0x00040004,0x00000008,0x22e80a08,0x1e0002a4,0x00040004,0x00000040,0x22a40a28, +0x0a000cb8,0x00000cbc,0x0a800031,0x23e03a6c,0x000003c0,0x00000200,0x0a800031,0x23403a6c, +0x00000380,0x00000200,0x0a800031,0x24203a6c,0x00000480,0x00000200,0x0a800031,0x23003a6c, +0x000002e0,0x00000200,0x00000040,0x22000204,0x060002d0,0x02180200,0x00000008,0x22e80a08, +0x1e0002a4,0x00040004,0x0a600031,0x23803a0c,0x000002e0,0x00000200,0x60204101,0x001f2605, +0x60004101,0x001f2505,0x00000001,0x4cc02288,0x00000344,0x00000000,0x00000001,0x2aa00208, +0x0000035c,0x00000000,0x60104101,0x00212505,0x60244101,0x00212605,0x00000001,0x2ab40208, +0x00000318,0x00000000,0x00000001,0x4cc52288,0x00000304,0x00000000,0x00000001,0x2ab80208, +0x000004c4,0x00000000,0x00000001,0x4cc62288,0x000004a4,0x00000000,0x20006101,0xff0021f8, +0x00000001,0x4cc12288,0x000004b4,0x00000000,0x00000001,0x2aa40208,0x000004dc,0x00000000, +0x00400001,0x24301e08,0x00000000,0x00000000,0x00000001,0x2abc0208,0x0000039c,0x00000000, +0x00000001,0x4cc72288,0x00000384,0x00000000,0x0a600031,0x22e03a08,0x06000000,0x0219e000, +0x20004d01,0x00171707,0x20004d01,0x00001d07,0x00000040,0x22000204,0x060002d4,0x02890000, +0x00000001,0x23a8060c,0x00000000,0x0007001f,0x00000041,0x23a41a28,0x1e000cd6,0x00020002, +0x00000001,0x23a01a28,0x00000cd4,0x00000000,0x06000010,0x20002260,0x1e000c68,0x00000000, +0x00000001,0x44401e88,0x00000000,0x00000000,0x0c800031,0x26803a4c,0x000003a0,0x00000200, +0x00000001,0x23a01a28,0x00000cd4,0x00000000,0x00000041,0x23a41a28,0x1e000cd2,0x00020002, +0x0c800031,0x27803a4c,0x000003a0,0x00000200,0x00400005,0x42ac2288,0x22690744,0x00690754, +0x00000040,0x22e00208,0x02000740,0x00000750,0x00000001,0x44492288,0x0000075c,0x00000000, +0x00000001,0x44482288,0x0000074c,0x00000000,0x00400005,0x42d82288,0x224002ac,0x00690844, +0x00000001,0x444b2288,0x0000085c,0x00000000,0x00000001,0x444a2288,0x0000084c,0x00000000, +0x00000040,0x23000208,0x020002e0,0x00000840,0x00200005,0x4c7c2288,0x226002d8,0x00400854, +0x00200005,0x4c7d2288,0x226002da,0x00400855,0x00000001,0x24480208,0x00000448,0x00000000, +0x00000040,0x24440208,0x02000300,0x00000850,0x00010020,0x34000004,0x0e001400,0x00001858, +0x00000041,0x22a42248,0x16000440,0x00020002,0x00000040,0x22001240,0x160002a4,0x0ba00ba0, +0x00000001,0x2c6c1a68,0x00008000,0x00000000,0x00000040,0x22001240,0x16000c6c,0x0c7c0c7c, +0x01000010,0x20002220,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000017f8, +0x00000040,0x22a41a28,0x1e000c6c,0x00010001,0x00000001,0x22c81e68,0x00000000,0x00010001, +0x00600001,0x22e01648,0x00000000,0x00000000,0x01400010,0x20002220,0x0a690448,0x000002a4, +0x00410002,0x22e01a48,0x1e0002c8,0x00000000,0x2203eb10,0x00170007,0x00000001,0x23001048, +0x00000600,0x00000000,0x00000005,0x43201288,0x16000300,0x000f000f,0x0000004d,0x23402208, +0x00000320,0x00000000,0x05000010,0x20000200,0x22000340,0x0000002f,0x00010020,0x34000004, +0x0e001400,0x00001720,0x00000040,0x42a41a88,0x1e000c6c,0x00010001,0x00000006,0x22a61248, +0x22000c6a,0x00000c6e,0x20005601,0x00551907,0x20005601,0x00551707,0x00600001,0x2ce01e08, +0x00000000,0x00000000,0x01800010,0x20002260,0x228d0cc0,0x000002a4,0x00000001,0x22c81048, +0x00000600,0x00000000,0x02800010,0x20002260,0x1e8d0cc0,0x00000000,0x00000005,0x244c1248, +0x120002a6,0x000002c8,0x00000001,0x22c81048,0x00000600,0x00000000,0x00000005,0x244e1248, +0x120002a6,0x000002c8,0x0000004c,0x24500208,0x0000044c,0x00000000,0x03000010,0x20000200, +0x16000450,0x00180018,0x00010020,0x34000004,0x0e001400,0x000000e0,0x00000041,0x22a41248, +0x16000450,0x00040004,0x00000040,0x22001240,0x160002a4,0x02e002e0,0x00000001,0x2ce00208, +0x00008000,0x00000000,0x02800010,0x20000220,0x028d0aa0,0x00000ce0,0x00000001,0x22c81048, +0x00000600,0x00000000,0x02800010,0x20000220,0x028d0aa0,0x00000ce0,0x00000001,0x22ca1048, +0x00000600,0x00000000,0x00000005,0x244c0208,0x0200044c,0x000002c8,0x0000004c,0x22c00208, +0x0000044c,0x00000000,0x03000010,0x20000200,0x160002c0,0x00180018,0x00010020,0x34000004, +0x0e001400,0x00000030,0x00000041,0x22a41248,0x160002c0,0x00040004,0x00000040,0x22001240, +0x160002a4,0x02e002e0,0x00000001,0x2ce40208,0x00008000,0x00000000,0x00000041,0x22a41a28, +0x1e000c6c,0x00020002,0x04800002,0x42e00a68,0x1a8d0ae0,0x008d0ce0,0x00000001,0x42ac0a48, +0x000002a4,0x00000000,0x00800001,0x2ce01a68,0x004002e0,0x00000000,0x00000009,0x22c81248, +0x160002ac,0x00050005,0x06800002,0x43200a68,0x1a8d0b20,0x008d0ce0,0x00000040,0x22001240, +0x160002c8,0x06800680,0x00800001,0x2ce01a68,0x00400320,0x00000000,0x00600001,0x23e00208, +0x00208000,0x00000000,0x00000040,0x22001240,0x160002c8,0x07800780,0x00600001,0x24000208, +0x00208000,0x00000000,0x00000040,0x43600a48,0x1e0002a4,0x00010001,0x00000009,0x23801248, +0x16000360,0x00050005,0x00000040,0x22001240,0x16000380,0x06800680,0x00600001,0x24801248, +0x00408000,0x00000000,0x00000040,0x22001240,0x16000380,0x07800780,0x00600001,0x24901248, +0x00408000,0x00000000,0x00000040,0x22001240,0x16000380,0x06800680,0x00600001,0x24601248, +0x00408002,0x00000000,0x00000040,0x22001240,0x16000380,0x07800780,0x00600001,0x24701248, +0x00408002,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce0,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x00000001,0x22ac1a08,0x00000c6c,0x00000000,0x00400001,0x28b82288, +0x00000c6c,0x00000000,0x0020000c,0x29001a68,0x1e450ce0,0x00010001,0x00000001,0x48ca1e88, +0x00000000,0x00000000,0x00000041,0x24421a48,0x12000c6c,0x000000ae,0x00810002,0x42e01a88, +0x1e0002a4,0x00000000,0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88, +0x00000000,0x00000000,0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248, +0x228d0460,0x008d0300,0x03400010,0x20000200,0x16690300,0x00000000,0x0000000c,0x23001a28, +0x1e000ce2,0x00010001,0x20018b40,0x1a191be7,0x0000000c,0x23401a28,0x1e000ce0,0x00010001, +0x04600002,0x23a01248,0x128d0380,0x008d0390,0x00000041,0x23200228,0x120002ac,0x000000ae, +0x00410002,0x24501a48,0x1e0002a4,0x00000000,0x606d8140,0x1b1b1bad,0x00400001,0x68e00a68, +0x00000340,0x00000000,0x04400002,0x23c01248,0x126903a0,0x006903a8,0x02000010,0x20001260, +0x1e000450,0x00000000,0x00200040,0x23600a28,0x0a450360,0x00450368,0x04200002,0x22c81248, +0x124503c0,0x004503c4,0x00000040,0x24340a08,0x0a000360,0x00000364,0x00000001,0x43600a6c, +0x00000300,0x00000000,0x04000002,0x22e01248,0x120002c8,0x000002ca,0x00000040,0x22a40208, +0x12000434,0x000000ac,0x00400001,0x68e21a68,0x00000360,0x00000000,0x00000001,0x24381208, +0x000002e0,0x00000000,0x00000040,0x24300a08,0x02000320,0x000002a4,0x00010020,0x34000004, +0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28, +0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000002c0,0x00200001,0x28881248,0x00450bb0,0x00000000,0x00000040,0x22000204, +0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208, +0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260, +0x1e000452,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200, +0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200, +0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20, +0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001f0,0x00200001,0x28881248, +0x00450bb4,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c, +0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208, +0x0200098a,0x00000438,0x02000010,0x20001260,0x1e000454,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28, +0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000120,0x00200001,0x28881248,0x00450bb8,0x00000000,0x00000040,0x22000204, +0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208, +0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260, +0x1e000456,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200, +0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200, +0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20, +0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050,0x00200001,0x28881248, +0x00450bbc,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c, +0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208, +0x0200098a,0x00000438,0x04000010,0x20000200,0x02000430,0x00000420,0x00010020,0x34000004, +0x0e001400,0x00000058,0x00000040,0x22a40208,0x12000430,0x000040ac,0x60204101,0x00212105, +0x00200001,0x2cd81a68,0x00450ce0,0x00000000,0x00000001,0x4cdc1e88,0x00000000,0x000a000a, +0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00000040,0x24240208,0x120002a4,0x00004442, +0x01000010,0x20000200,0x02000ce0,0x00000ce4,0x00010020,0x34000004,0x0e001400,0x00000548, +0x01800010,0x20000220,0x028d03e0,0x00000ce4,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x0020000c,0x29001a68,0x1e450ce4,0x00010001,0x00810002,0x42e01a88,0x1e0002a4,0x00000000, +0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88,0x00000000,0x00000000, +0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248,0x228d0460,0x008d0300, +0x03400010,0x20000200,0x16690300,0x00000000,0x20018b40,0x1a191be7,0x0000000c,0x23401a28, +0x1e000ce6,0x00010001,0x04600002,0x23a01248,0x128d0380,0x008d0390,0x0000000c,0x23201a28, +0x1e000ce4,0x00010001,0x00410002,0x24501a48,0x1e0002a4,0x00000000,0x606d8140,0x1b1b1bad, +0x00000001,0x43000a6c,0x00000340,0x00000000,0x04400002,0x23c01248,0x126903a0,0x006903a8, +0x00400001,0x68e00a68,0x00000320,0x00000000,0x02000010,0x20001260,0x1e000450,0x00000000, +0x00200040,0x23600a28,0x0a450360,0x00450368,0x00400001,0x68e21a68,0x00000300,0x00000000, +0x04200002,0x22c81248,0x124503c0,0x004503c4,0x00000040,0x24340a08,0x0a000360,0x00000364, +0x04000002,0x22e01248,0x120002c8,0x000002ca,0x00000040,0x22a40208,0x12000434,0x000000aa, +0x00000001,0x24381208,0x000002e0,0x00000000,0x00000040,0x24300208,0x120002a4,0x00000442, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420, +0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444, +0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000002c0,0x00200001,0x28881248,0x00450bb0,0x00000000, +0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438, +0x02000010,0x20001260,0x1e000452,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0, +0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000, +0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001f0, +0x00200001,0x28881248,0x00450bb4,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000, +0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988, +0x03000002,0x24381208,0x0200098a,0x00000438,0x02000010,0x20001260,0x1e000454,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x03000010,0x20000200,0x02000430,0x00000420, +0x00000001,0x22a41e68,0x00000000,0x00010001,0x03110010,0x20000200,0x02000430,0x00000444, +0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x02000010,0x20000a20,0x1e0002c8,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000120,0x00200001,0x28881248,0x00450bb8,0x00000000, +0x00000040,0x22000204,0x060002a8,0x10782000,0x0d600031,0x29803a0c,0x00000880,0x00000200, +0x00000040,0x24300208,0x12000430,0x00000988,0x03000002,0x24381208,0x0200098a,0x00000438, +0x02000010,0x20001260,0x1e000456,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0, +0x03000010,0x20000200,0x02000430,0x00000420,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x03110010,0x20000200,0x02000430,0x00000444,0x00010002,0x22c81a28,0x1e0002a4,0x00000000, +0x02000010,0x20000a20,0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00200001,0x28881248,0x00450bbc,0x00000000,0x00000040,0x22000204,0x060002a8,0x10782000, +0x0d600031,0x29803a0c,0x00000880,0x00000200,0x00000040,0x24300208,0x12000430,0x00000988, +0x03000002,0x24381208,0x0200098a,0x00000438,0x04000010,0x20000200,0x02000430,0x00000420, +0x00010020,0x34000004,0x0e001400,0x00000058,0x00000040,0x22a40208,0x12000430,0x000040aa, +0x60204101,0x00212105,0x00200001,0x2cd81a68,0x00450ce4,0x00000000,0x00000001,0x4cdc1e88, +0x00000000,0x000b000b,0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00000040,0x24240208, +0x120002a4,0x00004442,0x02000010,0x20000200,0x16000ce0,0x00000000,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x02010010,0x20000200,0x16000ce4,0x00000000,0x02010010,0x20000200, +0x02000ce0,0x00000ce4,0x00010002,0x22c81a28,0x1e0002a4,0x00000000,0x01000010,0x20000a20, +0x1e0002c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000168,0x01800010,0x20000220, +0x168d03e0,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00810002,0x42e01a88, +0x1e0002a4,0x00000000,0x00800001,0x23002288,0x004002e0,0x00000000,0x00400001,0x63031e88, +0x00000000,0x00000000,0x00800041,0x23201228,0x228d0480,0x008d0300,0x00800041,0x23801248, +0x228d0460,0x008d0300,0x20018b40,0x1a191be7,0x04600002,0x23a01248,0x128d0380,0x008d0390, +0x606d8140,0x1b1b1bad,0x04400002,0x23c01248,0x126903a0,0x006903a8,0x00200040,0x23600a28, +0x0a450360,0x00450368,0x04200002,0x22c81248,0x124503c0,0x004503c4,0x00000040,0x24340a08, +0x0a000360,0x00000364,0x04000002,0x22a41248,0x120002c8,0x000002ca,0x00000040,0x22e00208, +0x12000434,0x000000a8,0x00000001,0x24381208,0x000002a4,0x00000000,0x00000040,0x24300208, +0x120002e0,0x00000442,0x04000010,0x20000200,0x02000430,0x00000420,0x00010020,0x34000004, +0x0e001400,0x00000038,0x00000001,0x4cdc1e88,0x00000000,0x000c000c,0x00000040,0x4cde1a88, +0x1e000c6c,0x00010001,0x00200001,0x2cd81e68,0x00000000,0x00000000,0x60204101,0x00212105, +0x00000040,0x22a41a28,0x1e000c6c,0x00080008,0x00200001,0x22b03648,0x00000000,0x10101010, +0x00000040,0x22001240,0x160002a4,0x07400740,0x00200041,0x22b01248,0x164502b0,0x00100010, +0x00200040,0x22001040,0x12000200,0x004502b0,0x00200001,0x22ac2288,0x01e08000,0x00000000, +0x00000040,0x22001240,0x160002a4,0x08400840,0x00200040,0x22001040,0x12000200,0x004502b0, +0x00200001,0x22ae2288,0x01e08000,0x00000000,0x02400005,0x20002260,0x166902ac,0x00010001, +0x00410001,0x63e40208,0x006003e0,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce0, +0x00000001,0x22c81048,0x00000600,0x00000000,0x01800010,0x20000220,0x028d03e0,0x00000ce4, +0x00000001,0x22d81048,0x00000600,0x00000000,0x01800010,0x20000220,0x168d03e0,0x00000000, +0x00000006,0x22e01228,0x120002c8,0x000002d8,0x00000001,0x22dc1048,0x00000600,0x00000000, +0x00000006,0x23000a28,0x120002e0,0x000002dc,0x00000004,0x44580a48,0x00000300,0x00000000, +0x06000010,0x20001260,0x1e000458,0x00000000,0x00010020,0x34000004,0x0e001400,0x000005e8, +0x0000004c,0x22a41208,0x00000458,0x00000000,0x00000041,0x22c81248,0x160002a4,0x00040004, +0x00000040,0x22001240,0x160002c8,0x03e003e0,0x00000001,0x244c0208,0x00008000,0x00000000, +0x01800010,0x20000220,0x028d03e0,0x0000044c,0x00000001,0x22e01e68,0x00000000,0x00010001, +0x00810002,0x24a01a48,0x1e0002e0,0x00000000,0x02800010,0x20001260,0x168d04a0,0x00000000, +0x00000001,0x23001048,0x00000600,0x00000000,0x0000004d,0x23201208,0x00000300,0x00000000, +0x00000004,0x23041228,0x00000300,0x00000000,0x00000001,0x63400288,0x00000320,0x00000000, +0x00000005,0x44581248,0x0a000458,0x00000304,0x06000010,0x20002260,0x22000340,0x00000027, +0x00010020,0x34000004,0x0e001400,0x000004d8,0x00800001,0x22e02288,0x004004a0,0x00000000, +0x00800041,0x23201228,0x128d0480,0x008d04a0,0x00000001,0x22a41e68,0x00000000,0x00010001, +0x00600001,0x23001648,0x00000000,0x00000000,0x00000040,0x23841208,0x120000d6,0x00000442, +0x03400010,0x20000200,0x166902e0,0x00000000,0x00800041,0x22e01248,0x128d0460,0x008d04a0, +0x20018b40,0x1a191be7,0x00000001,0x43c61e88,0x00000000,0x00010001,0x00000001,0x43c41e88, +0x00000000,0x00000000,0x00410002,0x23001a48,0x1e0002a4,0x00000000,0x04600002,0x23a01248, +0x128d02e0,0x008d02f0,0x606d8140,0x1b1b1bad,0x2203eb10,0x00180007,0x04400002,0x22b01248, +0x126903a0,0x006903a8,0x00200040,0x23600a28,0x0a450360,0x00450368,0x00000001,0x22c81048, +0x00000600,0x00000000,0x04200002,0x23001248,0x124502b0,0x004502b4,0x00000040,0x23800a08, +0x0a000360,0x00000364,0x00000005,0x43c01288,0x160002c8,0x000f000f,0x04000002,0x23c21248, +0x12000300,0x00000302,0x00000040,0x245c0208,0x02000380,0x00000384,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x00000009,0x22c81a28,0x220002a4,0x000003c4,0x02000005,0x20002220, +0x0a0003c0,0x000002c8,0x00010020,0x34000004,0x0e001400,0x00000150,0x03000010,0x20000200, +0x0200045c,0x00000420,0x00010020,0x34000004,0x0e001400,0x00000160,0x03000010,0x20000200, +0x0200045c,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000140,0x00000041,0x22c82248, +0x160003c4,0x00040004,0x02000005,0x20002260,0x160003c6,0x00010001,0x00000001,0x22a41e68, +0x00000000,0x00240024,0x00000040,0x22001240,0x160002c8,0x0bb00bb0,0x00010002,0x48bc1a88, +0x1e0002a4,0x00040004,0x00000001,0x28880208,0x00008000,0x00000000,0x0000000c,0x23001a28, +0x1e000ce2,0x00010001,0x0000000c,0x22e01a28,0x1e000ce0,0x00010001,0x0020000c,0x29001a68, +0x1e45044c,0x00010001,0x00000040,0x22000204,0x060002a8,0x10782000,0x00000001,0x43c61e88, +0x00000000,0x00000000,0x00000001,0x43200a6c,0x00000300,0x00000000,0x00400001,0x68e00a68, +0x000002e0,0x00000000,0x00400001,0x68e21a68,0x00000320,0x00000000,0x0d600031,0x29803a0c, +0x00000880,0x00000200,0x00000040,0x245c0208,0x1200045c,0x00000988,0x03000002,0x23c21248, +0x1200098a,0x000003c2,0x00000040,0x43c42288,0x1e0003c4,0x00010001,0x05000010,0x20002260, +0x1e0003c4,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffe40,0x01000010,0x20002260, +0x1e0003c6,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000090,0x00200040,0x22b01a28, +0x1a45044c,0x00454ce0,0x00000001,0x22041640,0x00000000,0x05e005e0,0x00000001,0x22021640, +0x00000000,0x0cd40cd4,0x0020000c,0x42e00a68,0x1e4502b0,0x00010001,0x00200001,0x2cd41a68, +0x004002e0,0x00000000,0x0080002c,0x24500008,0x0e450000,0x00000f50,0x00008001,0x20000204, +0x00000000,0x00000000,0x00200001,0x23c41a68,0x00450cd4,0x00000000,0x00000040,0x245c0208, +0x1200045c,0x000003c0,0x04000010,0x20000200,0x0200045c,0x00000420,0x00010020,0x34000004, +0x0e001400,0x00000100,0x00200040,0x22b01a28,0x1a45044c,0x00454ce0,0x00000001,0x22041640, +0x00000000,0x05e005e0,0x00000001,0x24281208,0x000003c2,0x00000000,0x00000001,0x24200208, +0x0000045c,0x00000000,0x00000001,0x22021640,0x00000000,0x0cd00cd0,0x0020000c,0x42e00a68, +0x1e4502b0,0x00010001,0x00200001,0x2cd01a68,0x004002e0,0x00000000,0x0080002c,0x24500008, +0x0e450000,0x00000e80,0x00008001,0x20000204,0x00000000,0x00000000,0x00000040,0x22a40208, +0x12000420,0x00004442,0x00000040,0x4cde1a88,0x1e000c6c,0x00010001,0x00200001,0x23c41a68, +0x00450cd0,0x00000000,0x00000001,0x4cdc1e88,0x00000000,0x000d000d,0x00200001,0x2cd81a68, +0x0045044c,0x00000000,0x00000040,0x22c80208,0x120002a4,0x000040d6,0x00000040,0x24240208, +0x120002c8,0x000043c0,0x03000010,0x20001260,0x1e000458,0x00000000,0x00010020,0x34000004, +0x0e001400,0xfffffa18,0x00000040,0x44402288,0x1e000440,0x00010001,0x05000010,0x20002260, +0x22000440,0x00000c68,0x00010020,0x34000004,0x0e001400,0xffffe7a8,0x03000010,0x20000200, +0x02000420,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000080,0x00400001,0x2a682288, +0x00000cdc,0x00000000,0x00000001,0x2a940208,0x00000420,0x00000000,0x00400001,0x2a700208, +0x00000cd8,0x00000000,0x00000001,0x4c721e88,0x00000000,0x00010001,0x00000001,0x4a642288, +0x00000cde,0x00000000,0x00000001,0x4c781e88,0x00000000,0x00010001,0x00000001,0x4a6c1e88, +0x00000000,0x00090009,0x00200001,0x2a980208,0x00450424,0x00000000,0x01000010,0x20002260, +0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000400,0x03000010,0x20000200, +0x02000420,0x00000444,0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x22a42228, +0x1e000a64,0x00020002,0x00000001,0x2bc40208,0x00000420,0x00000000,0x00000041,0x22c81248, +0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608, +0x00000000,0x00100010,0x00000020,0x34000004,0x0e001400,0x00000340,0x01400010,0x20002260, +0x1e690448,0x00000000,0x00000001,0x22a41e68,0x00000000,0x00010001,0x00600001,0x23201648, +0x00000000,0x00000000,0x00000001,0x22e80208,0x00000840,0x00000000,0x00000001,0x22e40208, +0x00000750,0x00000000,0x00000001,0x22e00208,0x00000740,0x00000000,0x00000001,0x22ec0208, +0x00000850,0x00000000,0x00400001,0x22f01e08,0x00000000,0x00000000,0x00410002,0x23201a48, +0x1e0002a4,0x00000000,0x00600001,0x23401648,0x00000000,0x00000000,0x00600001,0x23601648, +0x00000000,0x00000000,0x00400001,0x23001608,0x00000000,0x00000000,0x2203eb10,0x00190007, +0x00400001,0x23601248,0x00690320,0x00000000,0x00000001,0x22a61048,0x00000600,0x00000000, +0x00000005,0x26001240,0x160002a6,0x000f000f,0x00410001,0x22f00208,0x006902e0,0x00000000, +0x02400010,0x20002260,0x1e690448,0x00000000,0x00200040,0x22b00208,0x024502f0,0x004502f8, +0x00410002,0x23401a48,0x1e0002a4,0x00000000,0x00000040,0x2bc00208,0x020002b0,0x000002b4, +0x2203eb10,0x001a0007,0x00600001,0x23401648,0x00000000,0x00000000,0x00000001,0x22a61048, +0x00000600,0x00000000,0x00000005,0x26001240,0x160002a6,0x000f000f,0x00410001,0x23000208, +0x006902e0,0x00000000,0x2203eb10,0x001b0007,0x00600001,0x22e01648,0x00000000,0x00000000, +0x00200040,0x23300208,0x02450300,0x00450308,0x00000001,0x22a61048,0x00000600,0x00000000, +0x01400010,0x20002260,0x1e690448,0x00010001,0x00600001,0x23001648,0x00000000,0x00000000, +0x00000040,0x2bc40208,0x02000330,0x00000334,0x00000005,0x42c81288,0x160002a6,0x000f000f, +0x00410002,0x23401a48,0x1e0002a4,0x00000000,0x0000004d,0x2bc82208,0x000002c8,0x00000000, +0x2203eb10,0x001a0007,0x00000001,0x22a61048,0x00000600,0x00000000,0x01400010,0x20002260, +0x1e690448,0x00020002,0x00000005,0x42c81288,0x160002a6,0x000f000f,0x00410002,0x22e01a48, +0x1e0002a4,0x00000000,0x0000004d,0x22ac2208,0x000002c8,0x00000000,0x2203eb10,0x00170007, +0x00000009,0x2bcc0208,0x160002ac,0x00020002,0x00000001,0x22a61048,0x00000600,0x00000000, +0x01400010,0x20002260,0x1e690448,0x00030003,0x00000005,0x42c81288,0x160002a6,0x000f000f, +0x00410002,0x23001a48,0x1e0002a4,0x00000000,0x0000004d,0x22d82208,0x000002c8,0x00000000, +0x2203eb10,0x00180007,0x00000009,0x2bd00208,0x160002d8,0x00020002,0x00000001,0x22a61048, +0x00000600,0x00000000,0x00000005,0x42c81288,0x160002a6,0x000f000f,0x0000004d,0x23202208, +0x000002c8,0x00000000,0x00000009,0x2bd40208,0x16000320,0x00020002,0x00600040,0x22e00208, +0x168d0c80,0x000a000a,0x00000040,0x22000204,0x060002bc,0x0210b700,0x00600009,0x23000208, +0x168d02e0,0x00020002,0x0c600033,0x02e5e018,0x00002301,0x00000000,0x01000010,0x20002260, +0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000170,0x03000010,0x20002260, +0x1e000c70,0x00000000,0x00000001,0x22ac1e68,0x00000000,0x00010001,0x00000005,0x22a41228, +0x12000c74,0x00000c76,0x00010002,0x22c81a28,0x1e0002ac,0x00000000,0x01000005,0x20000a20, +0x0a0002a4,0x000002c8,0x00010020,0x34000004,0x0e001400,0x00000110,0x01000010,0x20002260, +0x1e000c72,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x22a42228, +0x1e000a64,0x00020002,0x00000001,0x2bc40208,0x00000a94,0x00000000,0x00000041,0x22c81248, +0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608, +0x00000000,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000050,0x00000040,0x22a42228, +0x1e000a64,0x00020002,0x00000001,0x2bc00208,0x00000a90,0x00000000,0x00000041,0x22c81248, +0x160002a4,0x00040004,0x00000040,0x22001240,0x160002c8,0x0bc00bc0,0x00000001,0xa0001608, +0x00000000,0x00010001,0x00600040,0x22e00208,0x168d0c80,0x000a000a,0x00000040,0x22000204, +0x060002bc,0x0210b700,0x00600009,0x23000208,0x168d02e0,0x00020002,0x0c600033,0x02e5e018, +0x00002301,0x00000000,0x01000010,0x20002260,0x1e000c72,0x00000000,0x00800001,0x20201608, +0x00000000,0x00000000,0x00000001,0x402d2288,0x00000c78,0x00000000,0x00000001,0x402f2288, +0x00000c72,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000001,0x404d2288, +0x00000a6c,0x00000000,0x00000001,0x402e1e88,0x00000000,0x00000000,0x00000001,0x20280208, +0x00000a68,0x00000000,0x00200001,0x20580208,0x00450a98,0x00000000,0x00000001,0x20541608, +0x00000000,0x00000000,0x00000001,0x20500208,0x00000a94,0x00000000,0x00400001,0x20242288, +0x00000a64,0x00000000,0x00600001,0x20301a68,0x008d0a70,0x00000000,0x00000001,0x402c2288, +0x0000004d,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000380,0x01000010,0x20001240, +0x12000a80,0x00000a82,0x00000001,0x22a61e68,0x00000000,0x00010001,0x00000040,0x22b01228, +0x16000c64,0x00100010,0x00000040,0x22dc1228,0x16000c66,0x00100010,0x00000001,0x42a41e88, +0x00000000,0x00000000,0x0000000c,0x23601228,0x16000a82,0x00040004,0x0000000c,0x23841228, +0x16000a82,0x000c000c,0x01010010,0x20001240,0x12000a84,0x00000a86,0x0000000c,0x23241228, +0x16000a84,0x000c000c,0x0000000c,0x23641228,0x16000a86,0x00080008,0x0000000c,0x23c41228, +0x16000a86,0x00040004,0x00000001,0x402c2288,0x00000a6d,0x00000000,0x00000005,0x23800a28, +0x1e000360,0x000f000f,0x00000009,0x23a00a28,0x1e000384,0x00040004,0x00010002,0x22ac1a28, +0x1e0002a6,0x00000000,0x05000010,0x20000a20,0x120002b0,0x00000c60,0x00000005,0x23041228, +0x1e000a86,0xf000f000,0x00400001,0x20401248,0x00690a80,0x00000000,0x00000001,0x404d2288, +0x0000002c,0x00000000,0x00000001,0x2c680e28,0x00000000,0x09010200,0x00000006,0x23c00a28, +0x0a000380,0x000003a0,0x00000005,0x23800a28,0x1e000364,0x000f000f,0x00010002,0x22c81a28, +0x1e0002a6,0x00000000,0x05000010,0x20000a20,0x120002dc,0x00000c62,0x00000009,0x23a00a28, +0x1e000380,0x00080008,0x00000005,0x22d80a28,0x0a0002ac,0x000002c8,0x00010002,0x22e01a28, +0x1e0002a6,0x00000000,0x00000005,0x22e40a28,0x0a0002d8,0x000002e0,0x02000005,0x20000a20, +0x1e0002e4,0x00010001,0x00010001,0x42a41e88,0x00000000,0x00010001,0x01000010,0x20001240, +0x12000a80,0x00000a84,0x01010010,0x20001240,0x12000a82,0x00000a86,0x00010002,0x23001a28, +0x1e0002a6,0x00000000,0x00000005,0x23200a28,0x0a000300,0x000002c8,0x00000005,0x22c80a28, +0x1e0003c4,0x000f000f,0x00000005,0x23400a28,0x0a000320,0x000002e0,0x00000009,0x22e00a28, +0x1e0002c8,0x00080008,0x02000005,0x20000a20,0x1e000340,0x00010001,0x00000009,0x23400a28, +0x1e000324,0x00040004,0x00000006,0x23000a28,0x0a0003c0,0x000002e0,0x00010001,0x42a41e88, +0x00000000,0x00010001,0x00000006,0x40200a48,0x0a000300,0x00000304,0x02000005,0x20002260, +0x160002a4,0x00010001,0x0000000c,0x22a41228,0x16000a84,0x00080008,0x00010001,0x404d1e88, +0x00000000,0x00060006,0x00000005,0x23200a28,0x1e0002a4,0x000f000f,0x02000010,0x20002260, +0x1e000a6d,0x00060006,0x00000006,0x23600a28,0x0a000320,0x00000340,0x00000006,0x22c80a28, +0x0a000360,0x000003a0,0x00000006,0x42e00a4c,0x0a0002c8,0x00000304,0x00000001,0x20221248, +0x000002e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22002240, +0x16000a88,0x0c680c68,0x00400001,0x20482288,0x00008000,0x00000000,0x00000001,0x20501608, +0x00000000,0x00000000,0x00000001,0x20540208,0x00000a90,0x00000000,0x01000010,0x20002260, +0x1e000c78,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a40a28, +0x0a000ca8,0x00000cac,0x20005601,0x00011707,0x00000040,0x22000204,0x060002d0,0x020a0400, +0x20005601,0x00011907,0x00000040,0x22c80a28,0x0a000ca8,0x00000ca4,0x00000008,0x23680a08, +0x1e0002a4,0x00040004,0x00000008,0x23880a08,0x1e0002c8,0x00040004,0x0a800033,0x00017054, +0x00002364,0x00000000,0x00000040,0x22000204,0x060002d0,0x020a0400,0x00000001,0x434c1e88, +0x00000000,0x00010001,0x0a800033,0x00017054,0x00002384,0x00000000,0x00000020,0x34000004, +0x0e001400,0x000001b0,0x06000010,0x20002260,0x1e00004d,0x00060006,0x00200040,0x22b01228, +0x16450c64,0x00080008,0x00000001,0x22c81e68,0x00000000,0x00010001,0x00200001,0x42a41688, +0x00000000,0x00000000,0x01000010,0x20002262,0x1e00004d,0x00030003,0x00000040,0x23200a28, +0x0a000ca0,0x00000ca4,0x00000040,0x22000204,0x060002d0,0x020a0300,0x00010001,0x404c1e88, +0x00000000,0x00010001,0x06000010,0x20002260,0x1e00004d,0x00030003,0x00010002,0x22d81a2a, +0x1e0002c8,0x00000000,0x00000008,0x23480a08,0x1e000320,0x00040004,0x00010001,0x404c1e88, +0x00000000,0x00040004,0x04200010,0x20000a20,0x124502b0,0x00450c60,0x00000001,0x46200a44, +0x000002d8,0x00000000,0x00210002,0x42a41a88,0x1e0002c8,0x00000000,0x00010002,0x22e0124a, +0x160002c8,0x00000000,0x00000040,0x42ca2288,0x220002a4,0x000002a6,0x01000010,0x20002260, +0x1e0002ca,0x00010001,0x00010002,0x22dc1248,0x160002c8,0x00000000,0x02000005,0x20001240, +0x120002dc,0x000002e0,0x00010001,0x404c1e88,0x00000000,0x00020002,0x01000010,0x20002260, +0x1e0002ca,0x00020002,0x00010002,0x23001a28,0x1e0002c8,0x00000000,0x00000005,0x22a40a28, +0x0a000300,0x000002d8,0x02000005,0x20000a20,0x1e0002a4,0x00010001,0x00010001,0x404c1e88, +0x00000000,0x00010001,0x0a800033,0x00001054,0x00002342,0x00000000,0x0a600031,0x22e03a08, +0x06000000,0x0219e000,0x20004d01,0x00171707,0x20004d01,0x00007e07,0x07000031,0x20003a00, +0x06000fc0,0x82000010,0x0a600032,0x22e03a08,0x06000000,0x0219e000,0x20004d01,0x00171707, +0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x00008001,0x20000204, +0x00000000,0x00000000,0x00200001,0xa2001a68,0x0020a200,0x00000000,0x00200040,0x22a41a68, +0x1e208200,0xffc0ffc0,0x00200008,0x22c81a68,0x1e4502a4,0x00020002,0x00200040,0x22e01248, +0x1a008480,0x004502c8,0x00000041,0x22e41248,0x17e08200,0x00020002,0x00000040,0x22001040, +0x12000204,0x000002e4,0x00000001,0x23001248,0x00008000,0x00000000,0x00000041,0x23041248, +0x17e08202,0x00020002,0x00000040,0x22001040,0x12000204,0x00000304,0x00000001,0x23021248, +0x00008000,0x00000000,0x05200010,0x20001a20,0x1e208200,0x00400040,0x00210001,0x22e01248, +0x00450300,0x00000000,0x00000040,0x22c01248,0x120002e0,0x000002e2,0x05000002,0x22c01248, +0x160002c0,0x03ff03ff,0x00000001,0x23c01248,0x000002c0,0x00000000,0x0080002d,0x20000220, +0x00450450,0x00000000,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00200040,0x22b01228,0x16450020,0x000f000f,0x00200001,0x29081648,0x00000000,0x00000000, +0x00000005,0x290a124c,0x16000006,0x07ff07ff,0x00000005,0x2908124c,0x16000004,0x07ff07ff, +0x00000040,0x22000204,0x060002d0,0x02280300,0x06000010,0x20002260,0x1e000025,0x00000000, +0x00000001,0x49401e88,0x00000000,0x00000000,0x0020000c,0x42c00a48,0x1e4502b0,0x00040004, +0x00200001,0x29041248,0x00450020,0x00000000,0x00200009,0x29001248,0x16450908,0x00040004, +0x00200001,0x290c1248,0x004002c0,0x00000000,0x00000041,0x22e01228,0x1200090a,0x0000090c, +0x00000040,0x23000a08,0x120002e0,0x00000908,0x00000009,0x23200228,0x16000300,0x00060006, +0x00000008,0x23480a08,0x1e000320,0x00040004,0x0a800031,0x28c03a6c,0x00000340,0x00000200, +0x00010020,0x34000004,0x0e001400,0x00000380,0x02000010,0x20002260,0x1e0008cc,0x00090009, +0x00010020,0x34000004,0x0e001400,0x00000280,0x00000005,0x22a41228,0x0e000908,0x0000fffe, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002b8,0x02190000,0x00000001,0x22e8060c, +0x00000000,0x00010001,0x00000005,0x22e41228,0x0e00090a,0x0000fffe,0x00000001,0x23241608, +0x00000000,0x00000000,0x20144001,0x00151700,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00600001,0x22c0228c,0x008d0300,0x00000000,0x00400001,0x23202288,0x006502c0,0x00000000, +0x00000041,0x23282228,0x1e000320,0x00400040,0x00000040,0x23400a28,0x1e000328,0x00800080, +0x00000040,0x22001240,0x16000340,0x00200020,0x00000001,0x43242288,0x00008000,0x00000000, +0x00000041,0x23602228,0x1e000321,0x00400040,0x00000040,0x23800a28,0x1e000360,0x00800080, +0x00000040,0x22001240,0x16000380,0x00200020,0x00000001,0x43252288,0x00008000,0x00000000, +0x00000041,0x22a42228,0x1e000322,0x00400040,0x00000040,0x22e00a28,0x1e0002a4,0x00800080, +0x00000040,0x22001240,0x160002e0,0x00200020,0x00000001,0x43262288,0x00008000,0x00000000, +0x00000041,0x22c02228,0x1e000323,0x00400040,0x00000040,0x23000a28,0x1e0002c0,0x00800080, +0x00000040,0x22001240,0x16000300,0x00200020,0x00000001,0x43282288,0x00008000,0x00000000, +0x05000010,0x20002260,0x22000326,0x00000328,0x00000001,0x49402288,0x00000323,0x00000000, +0x00010001,0x49402288,0x00000322,0x00000000,0x05000010,0x20002260,0x22000326,0x00000328, +0x00010001,0x43282288,0x00000326,0x00000000,0x05000010,0x20002260,0x22000324,0x00000328, +0x05000002,0x43282288,0x22000324,0x00000328,0x00010001,0x49402288,0x00000320,0x00000000, +0x05000010,0x20002260,0x22000325,0x00000328,0x00010001,0x49402288,0x00000321,0x00000000, +0x00800001,0x20a02288,0x00208000,0x00000000,0x00800001,0x20b02288,0x00208010,0x00000000, +0x00800001,0x20c02288,0x00208020,0x00000000,0x00800001,0x20d02288,0x00208030,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000e0,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002b8,0x02190000,0x20086001,0x00001700,0x00000001,0x22e41228,0x0000090a,0x00000000, +0x00000001,0x22e01228,0x00000908,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000041,0x22a42228,0x1e0002c0,0x00400040, +0x00000001,0x49402288,0x000002c0,0x00000000,0x00000040,0x23200a28,0x1e0002a4,0x00800080, +0x00000040,0x22001240,0x16000320,0x00200020,0x00800001,0x20a02288,0x00208000,0x00000000, +0x00800001,0x20b02288,0x00208010,0x00000000,0x00800001,0x20c02288,0x00208020,0x00000000, +0x00800001,0x20d02288,0x00208030,0x00000000,0x02000010,0x20002260,0x1e0008cf,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000770,0x02000010,0x20002260,0x1e0008cc,0x00090009, +0x00000001,0x23001e28,0x00000000,0x02010201,0x00000001,0x23081e68,0x00000000,0x00090009, +0x00000001,0x29500e28,0x00000000,0x03000201,0x00000001,0x49581688,0x00000000,0x00070007, +0x00000001,0x29540e28,0x00000000,0x08060504,0x00000001,0x23041608,0x00000000,0x00000000, +0x00000001,0x230c0e28,0x00000000,0x09000201,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x03000300, +0x00000001,0x29102248,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x000006a0, +0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x030c030c, +0x00000001,0x29102248,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000640, +0x02000010,0x20002260,0x1e0008cc,0x00030003,0x00010020,0x34000004,0x0e001400,0x000000d0, +0x00000005,0x22a41228,0x160008e0,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x29102248,0x00008000,0x00000000,0x00000005,0x22a41228,0x160008e2,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x29122248,0x00008000,0x00000000, +0x00000005,0x22a41228,0x160008e4,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x29142248,0x00008000,0x00000000,0x00000005,0x22a41228,0x160008e6,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x29162248,0x00008000,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000550,0x00000005,0x22a41228,0x1e0008e0,0x000f000f, +0x0000000c,0x22a81228,0x160008e0,0x00040004,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000001,0x22ac2228,0x00008000,0x00000000, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e12288,0x00008000,0x00000000, +0x0000000c,0x22a81228,0x160008e0,0x00080008,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e22288,0x00008000,0x00000000, +0x0000000c,0x22a81228,0x160008e0,0x000c000c,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000005,0x22a41228,0x1e0008e2,0x000f000f, +0x00000009,0x22b02228,0x1e008000,0x000c000c,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42e42288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x00040004, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42e52288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x00080008, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42e62288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e2,0x000c000c, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42e72288,0x00008000,0x00000000,0x00000005,0x22a41228,0x1e0008e4,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e82288,0x00008000,0x00000000, +0x0000000c,0x22a81228,0x160008e4,0x00040004,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42e92288,0x00008000,0x00000000, +0x0000000c,0x22a81228,0x160008e4,0x00080008,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42ea2288,0x00008000,0x00000000, +0x0000000c,0x22a81228,0x160008e4,0x000c000c,0x00000005,0x22a40a28,0x1e0002a8,0x000f000f, +0x00000040,0x22001240,0x160002a4,0x09500950,0x00000001,0x42eb2288,0x00008000,0x00000000, +0x00000005,0x22a41228,0x1e0008e6,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42ec2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x00040004, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42ed2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x00080008, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42ee2288,0x00008000,0x00000000,0x0000000c,0x22a81228,0x160008e6,0x000c000c, +0x00000005,0x22a40a28,0x1e0002a8,0x000f000f,0x00000040,0x22001240,0x160002a4,0x09500950, +0x00000001,0x42c02288,0x00008000,0x00000000,0x00000009,0x22c42228,0x1e0002e2,0x00080008, +0x00000009,0x22f42228,0x1e0002e1,0x00040004,0x00000009,0x23202228,0x1e0002e7,0x000c000c, +0x00000009,0x23242228,0x1e0002e6,0x00080008,0x00000009,0x23042228,0x1e0002ee,0x00080008, +0x00000009,0x23442228,0x1e0002e5,0x00040004,0x00000009,0x23a02228,0x1e0002eb,0x000c000c, +0x00000006,0x22f00a28,0x0a0002b0,0x000002c4,0x00000009,0x22c42228,0x1e0002ea,0x00080008, +0x00000006,0x23400a28,0x0a000320,0x00000324,0x00000009,0x23242228,0x1e0002ed,0x00040004, +0x00000006,0x23000a28,0x0a0002f0,0x000002f4,0x00000006,0x23c00a28,0x0a0003a0,0x000002c4, +0x00000009,0x22f02228,0x1e0002e9,0x00040004,0x00000006,0x23600a28,0x0a000340,0x00000344, +0x00000006,0x49100a48,0x0a000300,0x000002ac,0x00000009,0x23002228,0x1e0002c0,0x000c000c, +0x00000006,0x22a40a28,0x0a0003c0,0x000002f0,0x00000006,0x43800a4c,0x22000360,0x000002e4, +0x00000006,0x23200a28,0x0a000300,0x00000304,0x00000006,0x49140a48,0x220002a4,0x000002e8, +0x00000001,0x29121248,0x00000380,0x00000000,0x00000006,0x23400a28,0x0a000320,0x00000324, +0x00000006,0x43600a4c,0x22000340,0x000002ec,0x00000001,0x29161248,0x00000360,0x00000000, +0x02000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00002c40, +0x02000010,0x20002260,0x1e0008cd,0x00000000,0x00010020,0x34000004,0x0e001400,0x00002c20, +0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000f50, +0x03200009,0x25d01208,0x16450908,0x00040004,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0003,0x00000001,0x22a41e68, +0x00000000,0x00010001,0x00000001,0x46001e88,0x00000000,0x007f007f,0x00600001,0x24c01648, +0x00000000,0x81818181,0x00000001,0x22e00228,0x000005d0,0x00000000,0x00000001,0x22e40228, +0x000005d4,0x00000000,0x00000005,0x44d01288,0x16000910,0x000f000f,0x00600001,0x25c01648, +0x00000000,0x7f7f7f7f,0x00210002,0x25d81a48,0x1e0002a4,0x00000000,0x03000010,0x20001260, +0x1e00090a,0x00000000,0x00200001,0x29501e08,0x00000000,0x00000000,0x0c600031,0x23c03a0c, +0x000002e0,0x00000200,0x00000040,0x22e00228,0x160005d0,0x00040004,0x00000001,0x22e40228, +0x000005d4,0x00000000,0x00010001,0x46001e88,0x00000000,0x00810081,0x06000010,0x20000200, +0x160005d4,0x00000000,0x0c600031,0x24003a0c,0x000002e0,0x00000200,0x00000040,0x22e00228, +0x160005d0,0x00080008,0x00000001,0x22e40228,0x000005d4,0x00000000,0x0c600031,0x24403a0c, +0x000002e0,0x00000200,0x00000040,0x22e00228,0x160005d0,0x000c000c,0x00000001,0x22e40228, +0x000005d4,0x00000000,0x0c600031,0x24803a0c,0x000002e0,0x00000200,0x00010020,0x34000004, +0x0e001400,0x00000060,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000, +0x20086001,0x0f001700,0x00000040,0x22e40228,0x1e0005d4,0xffffffff,0x00000001,0x22e00228, +0x000005d0,0x00000000,0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x25c0228c, +0x008d0300,0x00000000,0x06000010,0x20000200,0x160005d0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000068,0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000, +0x00000001,0x22e8060c,0x00000000,0x000f0000,0x00000001,0x22e40228,0x000005d4,0x00000000, +0x00000040,0x22e00228,0x1e0005d0,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00800001,0x24c02288,0x00600300,0x00000000,0x02000010,0x20000200,0x060005d8,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02190000,0x20086001,0x00001700,0x00000040,0x22e40228,0x1e0005d4,0xffffffff, +0x00000040,0x22e00228,0x1e0005d0,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x46002288,0x000002c0,0x00000000, +0x02000010,0x20002260,0x1e0004d0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000190, +0x00800001,0x22e02248,0x008d04c0,0x00000000,0x00800001,0x23002248,0x008d05c0,0x00000000, +0x03200010,0x20000200,0x164505d0,0x00000000,0x00000040,0x23601228,0x160005d8,0x00030003, +0x00200001,0x22c41648,0x00000000,0x00000000,0x00800040,0x23201248,0x124002e0,0x004002e2, +0x00000040,0x63800a88,0x12000360,0x000005da,0x00600040,0x23401248,0x12400320,0x00400322, +0x00400040,0x22b01248,0x12400340,0x00400342,0x00200040,0x22c01248,0x124002b0,0x004002b2, +0x00200040,0x22c01248,0x164502c0,0x00080008,0x00210001,0x22c41248,0x004502c0,0x00000000, +0x01000010,0x20002260,0x1e000380,0x00030003,0x00000040,0x23841228,0x120002c4,0x000002c6, +0x0000000c,0x23a00a08,0x22000384,0x00000380,0x00010001,0x23a01608,0x00000000,0x00800080, +0x00a00040,0x27402268,0x228d0400,0x000043a0,0x00a00040,0x26c02268,0x228d03c0,0x000043a0, +0x00a00040,0x27802268,0x228d0420,0x000043a0,0x00a00040,0x28402268,0x228d0480,0x000043a0, +0x00a00040,0x27c02268,0x228d0440,0x000043a0,0x00a00040,0x28002268,0x228d0460,0x000043a0, +0x00a00040,0x27002268,0x228d03e0,0x000043a0,0x00a00040,0x28802268,0x228d04a0,0x000043a0, +0x00000020,0x34000004,0x0e001400,0x00000460,0x02000010,0x20002260,0x1e0004d0,0x00010001, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x201c5601,0x002e2c00,0x20145601,0x002e2800, +0x20185601,0x002e2a00,0x20005601,0x002e2600,0x00a00040,0x28802268,0x228d04a0,0x008d45a0, +0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00a00040,0x27802268,0x228d0420,0x008d4520, +0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x27c02268,0x228d0440,0x008d4540, +0x00a00040,0x28002268,0x228d0460,0x008d4560,0x00a00040,0x26c02268,0x228d03c0,0x008d44c0, +0x00a00040,0x27002268,0x228d03e0,0x008d44e0,0x00000020,0x34000004,0x0e001400,0x00000390, +0x02000010,0x20002260,0x1e0004d0,0x00020002,0x00010020,0x34000004,0x0e001400,0x000000f0, +0x00800001,0x62e02288,0x008d04c0,0x00000000,0x00800001,0x62e12288,0x008d04c0,0x00000000, +0x00800001,0x62e22288,0x008d04c0,0x00000000,0x00800001,0x62e32288,0x008d04c0,0x00000000, +0x20005601,0x00172607,0x20005601,0x00172a07,0x20005601,0x00172807,0x20005601,0x00172c07, +0x00a00040,0x27002268,0x228d03e0,0x008d44e0,0x00a00040,0x26c02268,0x228d03c0,0x008d44c0, +0x00a00040,0x28002268,0x228d0460,0x008d4560,0x00a00040,0x27c02268,0x228d0440,0x008d4540, +0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x27802268,0x228d0420,0x008d4520, +0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00a00040,0x28802268,0x228d04a0,0x008d45a0, +0x00000020,0x34000004,0x0e001400,0x00000280,0x02000010,0x20002260,0x1e0004d0,0x00090009, +0x00010020,0x34000004,0x0e001400,0x00000260,0x00800001,0x62e02288,0x008d04c0,0x00000000, +0x00800001,0x62e12288,0x008d04c0,0x00000000,0x00800001,0x62e22288,0x008d04c0,0x00000000, +0x00800001,0x62e32288,0x008d04c0,0x00000000,0x20005601,0x002e2600,0x20145601,0x002e2800, +0x20185601,0x002e2a00,0x201c5601,0x002e2c00,0x00a00040,0x23602268,0x228d04e0,0x008d0300, +0x00a00040,0x23202268,0x228d04c0,0x008d02e0,0x80800040,0x44e01a88,0x22400360,0x00004600, +0x80800040,0x44e11a88,0x22400362,0x00004600,0x80800040,0x44c01a88,0x22400320,0x00004600, +0x80800040,0x44c11a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d0520,0x008d0300, +0x00a00040,0x23202268,0x228d0500,0x008d02e0,0x80800040,0x45201a88,0x22400360,0x00004600, +0x80800040,0x45211a88,0x22400362,0x00004600,0x80800040,0x45001a88,0x22400320,0x00004600, +0x80800040,0x45011a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d0560,0x008d0300, +0x00a00040,0x23202268,0x228d0540,0x008d02e0,0x80800040,0x45601a88,0x22400360,0x00004600, +0x80800040,0x45611a88,0x22400362,0x00004600,0x80800040,0x45401a88,0x22400320,0x00004600, +0x80800040,0x45411a88,0x22400322,0x00004600,0x00a00040,0x23602268,0x228d05a0,0x008d0300, +0x00a00040,0x23202268,0x228d0580,0x008d02e0,0x80800040,0x45a01a88,0x22400360,0x00004600, +0x80800040,0x45a11a88,0x22400362,0x00004600,0x80800040,0x45801a88,0x22400320,0x00004600, +0x80800040,0x45811a88,0x22400322,0x00004600,0x00a00040,0x27002268,0x228d03e0,0x008d44e0, +0x00a00040,0x26c02268,0x228d03c0,0x008d44c0,0x00a00040,0x27802268,0x228d0420,0x008d4520, +0x00a00040,0x27402268,0x228d0400,0x008d4500,0x00a00040,0x28002268,0x228d0460,0x008d4560, +0x00a00040,0x27c02268,0x228d0440,0x008d4540,0x00a00040,0x28802268,0x228d04a0,0x008d45a0, +0x00a00040,0x28402268,0x228d0480,0x008d4580,0x00800040,0x22e01a68,0x1a4006c0,0x004006c2, +0x00800040,0x26c01a68,0x1a4006c0,0x004046c2,0x00800040,0x23001a68,0x1a400700,0x00400702, +0x00800040,0x26e01a68,0x1a400700,0x00404702,0x00800040,0x23401a68,0x1a400780,0x00400782, +0x00800040,0x23201a68,0x1a400740,0x00400742,0x00800040,0x27201a68,0x1a400780,0x00404782, +0x00800040,0x27001a68,0x1a400740,0x00404742,0x00800040,0x27a01a68,0x1a400880,0x00404882, +0x00800040,0x27801a68,0x1a400840,0x00404842,0x00800040,0x27601a68,0x1a400800,0x00404802, +0x00800040,0x27401a68,0x1a4007c0,0x004047c2,0x00a00008,0x24c01a68,0x1e8d06c0,0x00010001, +0x00a00008,0x25001a68,0x1e8d0700,0x00010001,0x00a00008,0x25801a68,0x1e8d0780,0x00010001, +0x00a00008,0x25401a68,0x1e8d0740,0x00010001,0x00800040,0x23601a68,0x1a4007c0,0x004007c2, +0x00800040,0x23c01a68,0x1a400880,0x00400882,0x00800040,0x23801a68,0x1a400800,0x00400802, +0x00800040,0x23a01a68,0x1a400840,0x00400842,0x00a00001,0x26c01a48,0x008d24c0,0x00000000, +0x00a00001,0x27001a48,0x008d2500,0x00000000,0x00a00001,0x27801a48,0x008d2580,0x00000000, +0x00a00001,0x27401a48,0x008d2540,0x00000000,0x00600040,0x43e01a68,0x1a6002e0,0x006002e4, +0x00600040,0x44001a68,0x1a600320,0x00600324,0x00600040,0x47e01a68,0x1a600320,0x00604324, +0x00600040,0x47c01a68,0x1a6002e0,0x006042e4,0x00600040,0x44201a68,0x1a600360,0x00600364, +0x00600040,0x48001a68,0x1a600360,0x00604364,0x00600040,0x48201a68,0x1a6003a0,0x006043a4, +0x00600040,0x44401a68,0x1a6003a0,0x006003a4,0x00600040,0x43e21a68,0x1a6002e2,0x006002e6, +0x00600040,0x44021a68,0x1a600322,0x00600326,0x00600040,0x47e21a68,0x1a600322,0x00604326, +0x00600040,0x47c21a68,0x1a6002e2,0x006042e6,0x00600040,0x44221a68,0x1a600362,0x00600366, +0x00600040,0x48021a68,0x1a600362,0x00604366,0x00600040,0x48221a68,0x1a6003a2,0x006043a6, +0x00600040,0x44421a68,0x1a6003a2,0x006003a6,0x00800040,0x23401a68,0x1a400780,0x00400782, +0x00800040,0x23201a68,0x1a400740,0x00400742,0x00800040,0x23001a68,0x1a400700,0x00400702, +0x00800040,0x22e01a68,0x1a4006c0,0x004006c2,0x00800040,0x24601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x25c01a68,0x1e8d07c0,0x00010001,0x00a00008,0x26001a68,0x1e8d0800,0x00010001, +0x00800040,0x24801a68,0x1a400420,0x00400422,0x00800040,0x23801a68,0x1a400320,0x00400322, +0x00800040,0x23601a68,0x1a4002e0,0x004002e2,0x00800040,0x28401a68,0x1a4003e0,0x004043e2, +0x00800040,0x28601a68,0x1a400420,0x00404422,0x00a00001,0x27c01a48,0x008d25c0,0x00000000, +0x00a00001,0x28001a48,0x008d2600,0x00000000,0x00800040,0x24a01a68,0x1a400460,0x00400462, +0x00800040,0x28801a68,0x1a400460,0x00404462,0x00800040,0x23a01a48,0x1a400360,0x00400362, +0x00a00008,0x26401a68,0x1e8d0840,0x00010001,0x0080000c,0x24401a28,0x1e8d04a0,0x00010001, +0x00800040,0x23801a68,0x1a400800,0x00400802,0x00800040,0x23601a68,0x1a4007c0,0x004007c2, +0x00a00008,0x26801a68,0x1e8d0880,0x00010001,0x00a00001,0x28401a48,0x008d2640,0x00000000, +0x00800001,0x44c00a48,0x008d2440,0x00000000,0x00800040,0x23c01a48,0x1a400360,0x00400362, +0x00a00001,0x28801a48,0x008d2680,0x00000000,0x00800040,0x24001a48,0x1a400840,0x00400842, +0x00800001,0x24801248,0x004004c0,0x00000000,0x00800040,0x23a01248,0x128d03a0,0x008d03c0, +0x00000041,0x23801208,0x160000dc,0x08a008a0,0x00000001,0x29181608,0x00000000,0x00000000, +0x00800040,0x25001a48,0x128d0880,0x008d0480,0x00800040,0x23a01248,0x128d03a0,0x008d0400, +0x00000040,0x23c00208,0x16000380,0x00800080,0x00800040,0x23a01248,0x128d03a0,0x008d0500, +0x0000000c,0x23e00208,0x160003c0,0x00080008,0x04600002,0x22e01248,0x128d03a0,0x008d03b0, +0x00000041,0x23a01208,0x160000dc,0x03c003c0,0x00600001,0x23001268,0x008d02e0,0x00000000, +0x00000040,0x22e00208,0x160003a0,0x00800080,0x04400002,0x22b01a48,0x1a690300,0x00690308, +0x0000000c,0x291c0208,0x160002e0,0x00080008,0x00400001,0x22c01268,0x006902b0,0x00000000, +0x04200002,0x23201a48,0x1a4502c0,0x004502c4,0x04000002,0x23401248,0x12000320,0x00000322, +0x00200001,0x23601248,0x00000340,0x00000000,0x04000002,0x29541208,0x02000360,0x00000954, +0x04000010,0x20000200,0x02000954,0x000003e0,0x00010020,0x34000004,0x0e001400,0x00000060, +0x04000010,0x20000200,0x02000954,0x0000091c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x29181e28,0x00000000,0x00010001,0x00000001,0x29180a08,0x00000918,0x00000000, +0x00000001,0x62a4028c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00001cb0,0x02000010,0x20002260,0x1e0008cc,0x00030003, +0x00010020,0x34000004,0x0e001400,0x00001c90,0x00200009,0x27901208,0x16450908,0x00040004, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c, +0x00000000,0x000f0003,0x03000010,0x20001260,0x1e00090a,0x00000000,0x00000001,0x47801e88, +0x00000000,0x007f007f,0x00600001,0x27401648,0x00000000,0x7f7f7f7f,0x00000001,0x22e00228, +0x00000790,0x00000000,0x00000001,0x22e40228,0x00000794,0x00000000,0x00000005,0x491b1288, +0x16000916,0x000f000f,0x00000005,0x491a1288,0x16000914,0x000f000f,0x00010001,0x47801e88, +0x00000000,0x00810081,0x01000010,0x20001260,0x1e000908,0x00000000,0x00000005,0x49191288, +0x16000912,0x000f000f,0x00000005,0x49181288,0x16000910,0x000f000f,0x0c600031,0x23003a0c, +0x000002e0,0x00000200,0x00000040,0x22e00228,0x16000790,0x00040004,0x00000001,0x22e40228, +0x00000794,0x00000000,0x00600001,0x27c01648,0x00000000,0x81818181,0x00400001,0x27501648, +0x00000000,0x7f7f7f7f,0x0c600031,0x23403a0c,0x000002e0,0x00000200,0x00000040,0x22e00228, +0x16000790,0x00080008,0x00000001,0x22e40228,0x00000794,0x00000000,0x0c600031,0x23803a0c, +0x000002e0,0x00000200,0x00000040,0x22e00228,0x16000790,0x000c000c,0x00000001,0x22e40228, +0x00000794,0x00000000,0x60204101,0x00192d05,0x60004101,0x00182805,0x0c600031,0x23c03a0c, +0x000002e0,0x00000200,0x60204101,0x00182905,0x60004101,0x00192c05,0x00000001,0x27100208, +0x0000031c,0x00000000,0x00800001,0x27002288,0x00600343,0x00000000,0x60104101,0x001b2c05, +0x60244101,0x001b2d05,0x00000001,0x27140208,0x0000035c,0x00000000,0x60244101,0x001a2905, +0x60104101,0x001a2805,0x60004101,0x001d2e05,0x60204101,0x001c2b05,0x60204101,0x001d2f05, +0x60004101,0x001c2a05,0x00000001,0x27180208,0x0000039c,0x00000000,0x60244101,0x001f2f05, +0x60104101,0x001f2e05,0x00000001,0x271c0208,0x000003dc,0x00000000,0x60104101,0x001e2a05, +0x60244101,0x001e2b05,0x00010020,0x34000004,0x0e001400,0x00000068,0x20004d01,0x00001707, +0x00000040,0x22000204,0x060002a0,0x02290000,0x00000001,0x22e8060c,0x00000000,0x000f0000, +0x00000001,0x22e40228,0x00000794,0x00000000,0x00000040,0x22e00228,0x1e000790,0xffffffff, +0x0c600031,0x23003a0c,0x000002e0,0x00000200,0x00800001,0x27c02288,0x00600300,0x00000000, +0x01000010,0x20001260,0x1e00090a,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000110, +0x20004d01,0x00001707,0x00000040,0x22000204,0x060002a0,0x02190000,0x20086001,0x0f001700, +0x00000040,0x22e40228,0x1e000794,0xffffffff,0x00000001,0x22e00228,0x00000790,0x00000000, +0x00000040,0x22a41228,0x1e00090c,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x01000010,0x20001220,0x0a000908,0x000002a4,0x00800001,0x2740228c,0x008d0300,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02190000,0x20086001,0x07001700,0x00000040,0x22e40228,0x1e000794,0xffffffff, +0x00000040,0x22e00228,0x16000790,0x00100010,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00600001,0x2750228c,0x008d0300,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00600001,0x27502288,0x0000074f,0x00000000,0x01000010,0x20001260,0x1e000908,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000090,0x01000010,0x20001260,0x1e00090a,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000070,0x20004d01,0x00001707,0x00000040,0x22000204, +0x060002a0,0x02190000,0x20086001,0x00001700,0x00000040,0x22e40228,0x1e000794,0xffffffff, +0x00000040,0x22e00228,0x1e000790,0xffffffff,0x0c600031,0x23003a0c,0x000002e0,0x00000200, +0x00400001,0x22c0228c,0x00690300,0x00000000,0x00000001,0x47802288,0x000002c0,0x00000000, +0x00400001,0x27d01608,0x00000000,0x00000000,0x00000001,0x47581e88,0x00000000,0x00000000, +0x00200001,0x29501608,0x00000000,0x00000000,0x00600001,0x27902668,0x00000000,0x01234567, +0x00000001,0x275c1608,0x00000000,0x00000000,0x02000010,0x20000200,0x1600075c,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000038,0x00200001,0x29500208,0x004507c0,0x00000000, +0x60104101,0x003a3e05,0x00000001,0x47582288,0x00000780,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000118,0x02000010,0x20000200,0x1600075c,0x00010001,0x00010020,0x34000004, +0x0e001400,0x00000040,0x00400001,0x27d00208,0x00690748,0x00000000,0x00000001,0x47582288, +0x00000747,0x00000000,0x00200001,0x29500208,0x00450700,0x00000000,0x00000020,0x34000004, +0x0e001400,0x000000b8,0x02000010,0x20000200,0x1600075c,0x00020002,0x00010020,0x34000004, +0x0e001400,0x00000038,0x00200001,0x29500208,0x004507c8,0x00000000,0x00000001,0x47582288, +0x000007c7,0x00000000,0x60244101,0x00383e05,0x00000020,0x34000004,0x0e001400,0x00000060, +0x02000010,0x20000200,0x1600075c,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00200001,0x27d80208,0x00450750,0x00000000,0x00200001,0x29500208,0x00450708,0x00000000, +0x00200001,0x27d00208,0x00450718,0x00000000,0x00000001,0x47582288,0x00000717,0x00000000, +0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00200001,0x22e00208,0x004507d0,0x00000000, +0x00200001,0x22e80208,0x00450950,0x00000000,0x00600040,0x23002248,0x228d02e0,0x008d02e8, +0x00400040,0x23001248,0x12690300,0x00690308,0x00200040,0x23001248,0x12450300,0x00450304, +0x00000040,0x22a41208,0x12000300,0x00000302,0x00000040,0x22c00208,0x160002a4,0x00080008, +0x0000000c,0x23200208,0x160002c0,0x00040004,0x00a00001,0x23402288,0x00000320,0x00000000, +0x00a00001,0x23602288,0x00000320,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000180, +0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000090,0x00200001,0x23400208,0x004507d0,0x00000000, +0x00200001,0x23480208,0x00450340,0x00000000,0x00200001,0x23580208,0x00450348,0x00000000, +0x00200001,0x23500208,0x00450348,0x00000000,0x00200001,0x23680208,0x00450348,0x00000000, +0x00200001,0x23600208,0x00450348,0x00000000,0x00200001,0x23700208,0x00450348,0x00000000, +0x00200001,0x23780208,0x00450348,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000c0, +0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000090,0x00200001,0x22b00208,0x00450950,0x00000000, +0x00600001,0x23502288,0x000002b2,0x00000000,0x00600001,0x23402288,0x000002b0,0x00000000, +0x00600001,0x23582288,0x000002b3,0x00000000,0x00600001,0x23702288,0x000002b6,0x00000000, +0x00600001,0x23602288,0x000002b4,0x00000000,0x00600001,0x23682288,0x000002b5,0x00000000, +0x00600001,0x23482288,0x000002b1,0x00000000,0x00600001,0x23782288,0x000002b7,0x00000000, +0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00030003, +0x00010020,0x34000004,0x0e001400,0x00000108,0x60204101,0x003e1705,0x00800001,0x22f02288, +0x000002ef,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00800040,0x23402228, +0x0a8d07d0,0x008d0300,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x00800040,0x23c00a28, +0x1e8d0380,0x00020002,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288, +0x00600400,0x00000000,0x00600001,0x23502288,0x008d0442,0x00000000,0x00200001,0x23400208, +0x00450440,0x00000000,0x00600001,0x23582288,0x008d0443,0x00000000,0x00600001,0x23702288, +0x008d0446,0x00000000,0x00200001,0x23600208,0x00450444,0x00000000,0x00600001,0x23682288, +0x008d0445,0x00000000,0x00600001,0x23482288,0x008d0441,0x00000000,0x00600001,0x23782288, +0x008d0447,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000a58,0x00000040,0x22001240, +0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00040004,0x00010020,0x34000004, +0x0e001400,0x00000130,0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288, +0x01e08000,0x00000000,0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288, +0x008d07d0,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00800040,0x23402228, +0x0a8d02e0,0x008d0300,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x00800040,0x23c00a28, +0x1e8d0380,0x00020002,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288, +0x00600400,0x00000000,0x00600001,0x23502288,0x008d0445,0x00000000,0x00600001,0x23402288, +0x008d0447,0x00000000,0x00200001,0x23580208,0x00450444,0x00000000,0x00600001,0x23702288, +0x008d0441,0x00000000,0x00600001,0x23602288,0x008d0443,0x00000000,0x00600001,0x23682288, +0x008d0442,0x00000000,0x00600001,0x23482288,0x008d0446,0x00000000,0x00200001,0x23780208, +0x00450440,0x00000000,0x00000020,0x34000004,0x0e001400,0x000008f8,0x00000040,0x22001240, +0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00050005,0x00010020,0x34000004, +0x0e001400,0x00000190,0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288, +0x01e08000,0x00000000,0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288, +0x008d07d0,0x00000000,0x00800041,0x23002228,0x1e8d02e1,0x00020002,0x00600040,0x24602228, +0x228d02e8,0x008d07d0,0x00800040,0x23402228,0x0a8d02e0,0x008d0300,0x00600040,0x24800a28, +0x1e8d0460,0x00010001,0x00800040,0x23800a28,0x228d0340,0x008d02e2,0x0060000c,0x64a00a88, +0x1e8d0480,0x00010001,0x00800040,0x23c00a28,0x1e8d0380,0x00020002,0x00600001,0x44c82288, +0x006004a0,0x00000000,0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288, +0x00600400,0x00000000,0x00200001,0x24c00208,0x00450440,0x00000000,0x00600001,0x44c92288, +0x008d0448,0x00000000,0x00600001,0x23602288,0x004004c4,0x00000000,0x00600001,0x23702288, +0x004004c2,0x00000000,0x00600001,0x23582288,0x004004c5,0x00000000,0x00600001,0x23402288, +0x004004c8,0x00000000,0x00600001,0x23502288,0x004004c6,0x00000000,0x00600001,0x23482288, +0x004004c7,0x00000000,0x00600001,0x23682288,0x004004c3,0x00000000,0x00600001,0x23782288, +0x004004c1,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000738,0x00000040,0x22001240, +0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00080008,0x00010020,0x34000004, +0x0e001400,0x00000168,0x60204101,0x003e1705,0x00800001,0x22f02288,0x000002ef,0x00000000, +0x00600040,0x24602228,0x228d02e0,0x008d02e1,0x00800041,0x23002228,0x1e8d02e1,0x00020002, +0x00600040,0x24800a28,0x1e8d0460,0x00010001,0x00800040,0x23402228,0x0a8d07d0,0x008d0300, +0x0060000c,0x64a00a88,0x1e8d0480,0x00010001,0x00800040,0x23800a28,0x228d0340,0x008d02e2, +0x00600001,0x44c02288,0x006004a0,0x00000000,0x00800040,0x23c00a28,0x1e8d0380,0x00020002, +0x0080000c,0x64000a88,0x1e8d03c0,0x00020002,0x00800001,0x24402288,0x00600400,0x00000000, +0x00200001,0x24d00208,0x00450448,0x00000000,0x00600001,0x44c12288,0x008d0440,0x00000000, +0x00200001,0x23480208,0x00450440,0x00000000,0x00600001,0x23602288,0x004004c4,0x00000000, +0x00600001,0x23702288,0x004004c6,0x00000000,0x00600001,0x23582288,0x004004c3,0x00000000, +0x00600001,0x23402288,0x004004c0,0x00000000,0x00600001,0x23502288,0x004004c2,0x00000000, +0x00600001,0x23682288,0x004004c5,0x00000000,0x00600001,0x23782288,0x004004c7,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000005a0,0x00000040,0x22001240,0x1600075c,0x09180918, +0x02000010,0x20002220,0x1e008000,0x00060006,0x00010020,0x34000004,0x0e001400,0x000001a0, +0x00600040,0x22001240,0x168d0790,0x09500950,0x00600001,0x22e02288,0x01e08000,0x00000000, +0x00000001,0x42e82288,0x00000758,0x00000000,0x00600001,0x22e92288,0x008d07d0,0x00000000, +0x00200001,0x23000208,0x004502e0,0x00000000,0x00800041,0x23202228,0x1e8d02e1,0x00020002, +0x00600040,0x24602228,0x228d0300,0x008d02e1,0x00800040,0x23602228,0x0a8d02e0,0x008d0320, +0x00600040,0x24800a28,0x1e8d0460,0x00010001,0x00800040,0x23a00a28,0x228d0360,0x008d02e2, +0x0060000c,0x64a00a88,0x1e8d0480,0x00010001,0x00800040,0x23e00a28,0x1e8d03a0,0x00020002, +0x00600001,0x44c02288,0x006004a0,0x00000000,0x0080000c,0x64200a88,0x1e8d03e0,0x00020002, +0x00800001,0x23102288,0x00600420,0x00000000,0x00600001,0x44c12288,0x008d0310,0x00000000, +0x00200001,0x24d00208,0x00450318,0x00000000,0x00600001,0x23602288,0x008d04c6,0x00000000, +0x00200001,0x23580208,0x004504c8,0x00000000,0x00600001,0x23702288,0x008d04c2,0x00000000, +0x00200001,0x23680208,0x004504c4,0x00000000,0x00200001,0x23780208,0x004504c0,0x00000000, +0x00600001,0x23402288,0x008d04ce,0x00000000,0x00600001,0x23502288,0x008d04ca,0x00000000, +0x00200001,0x23480208,0x004504cc,0x00000000,0x00000020,0x34000004,0x0e001400,0x000003d0, +0x00000040,0x22001240,0x1600075c,0x09180918,0x02000010,0x20002220,0x1e008000,0x00070007, +0x00010020,0x34000004,0x0e001400,0x000003a0,0x00200001,0x22e00208,0x00450950,0x00000000, +0x00600001,0x22e82288,0x000002e7,0x00000000,0x00600041,0x23602228,0x1e8d02e1,0x00020002, +0x00600040,0x23002228,0x228d0950,0x008d02e1,0x00600040,0x23802228,0x0a8d0950,0x008d0360, +0x00600040,0x23200a28,0x1e8d0300,0x00010001,0x00a00001,0x23602288,0x00000957,0x00000000, +0x00600040,0x23a00a28,0x228d0380,0x008d02e2,0x0060000c,0x63400a88,0x1e8d0320,0x00010001, +0x00600040,0x23c00a28,0x1e8d03a0,0x00020002,0x00600001,0x22b02288,0x00600340,0x00000000, +0x00a00001,0x23402288,0x00000957,0x00000000,0x0060000c,0x63e00a88,0x1e8d03c0,0x00020002, +0x00000001,0x43642288,0x000002b6,0x00000000,0x00000001,0x434a2288,0x000002b2,0x00000000, +0x00000001,0x434c2288,0x000002b3,0x00000000,0x00000001,0x435c2288,0x000002b5,0x00000000, +0x00000001,0x43542288,0x000002b4,0x00000000,0x00000001,0x43482288,0x000002b1,0x00000000, +0x00600001,0x22c02288,0x006003e0,0x00000000,0x00000001,0x435e2288,0x00000364,0x00000000, +0x00000001,0x43442288,0x0000034a,0x00000000,0x00000001,0x43462288,0x0000034c,0x00000000, +0x00000001,0x43562288,0x0000035c,0x00000000,0x00000001,0x434e2288,0x00000354,0x00000000, +0x00000001,0x43402288,0x000002b0,0x00000000,0x00000001,0x43512288,0x000002c2,0x00000000, +0x00000001,0x434d2288,0x000002c3,0x00000000,0x00000001,0x435d2288,0x000002c5,0x00000000, +0x00000001,0x43552288,0x000002c4,0x00000000,0x00000001,0x43652288,0x000002c6,0x00000000, +0x00000001,0x43492288,0x000002c1,0x00000000,0x00000001,0x43422288,0x00000348,0x00000000, +0x00000001,0x434b2288,0x00000351,0x00000000,0x00000001,0x43472288,0x0000034d,0x00000000, +0x00000001,0x43572288,0x0000035d,0x00000000,0x00000001,0x434f2288,0x00000355,0x00000000, +0x00000001,0x435f2288,0x00000365,0x00000000,0x00000001,0x43412288,0x000002c0,0x00000000, +0x00000001,0x43702288,0x0000035e,0x00000000,0x00000001,0x436a2288,0x0000035e,0x00000000, +0x00000001,0x43502288,0x00000344,0x00000000,0x00000001,0x43582288,0x00000346,0x00000000, +0x00000001,0x43522288,0x00000346,0x00000000,0x00000001,0x43622288,0x00000356,0x00000000, +0x00000001,0x43682288,0x00000356,0x00000000,0x00000001,0x435a2288,0x0000034e,0x00000000, +0x00000001,0x43602288,0x0000034e,0x00000000,0x00000001,0x43432288,0x00000349,0x00000000, +0x00000001,0x43452288,0x0000034b,0x00000000,0x00000001,0x43592288,0x00000347,0x00000000, +0x00000001,0x43532288,0x00000347,0x00000000,0x00000001,0x43692288,0x00000357,0x00000000, +0x00000001,0x43632288,0x00000357,0x00000000,0x00000001,0x435b2288,0x0000034f,0x00000000, +0x00000001,0x43612288,0x0000034f,0x00000000,0x00000001,0x43712288,0x0000035f,0x00000000, +0x00000001,0x436b2288,0x0000035f,0x00000000,0x02000010,0x20000200,0x1600075c,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000050,0x00400001,0x26200208,0x00400360,0x00000000, +0x00400001,0x26000208,0x00400340,0x00000000,0x00400001,0x26300208,0x00400364,0x00000000, +0x00400001,0x26100208,0x00400344,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000140, +0x02000010,0x20000200,0x1600075c,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00400001,0x26600208,0x00400360,0x00000000,0x00400001,0x26400208,0x00400340,0x00000000, +0x00400001,0x26700208,0x00400364,0x00000000,0x00400001,0x26500208,0x00400344,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000d0,0x02000010,0x20000200,0x1600075c,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000050,0x00400001,0x26a00208,0x00400360,0x00000000, +0x00400001,0x26800208,0x00400340,0x00000000,0x00400001,0x26b00208,0x00400364,0x00000000, +0x00400001,0x26900208,0x00400344,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x02000010,0x20000200,0x1600075c,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00400001,0x26e00208,0x00400360,0x00000000,0x00400001,0x26c00208,0x00400340,0x00000000, +0x00400001,0x26f00208,0x00400364,0x00000000,0x00400001,0x26d00208,0x00400344,0x00000000, +0x00000040,0x275c0208,0x1600075c,0x00010001,0x05000010,0x20000200,0x1600075c,0x00040004, +0x00010020,0x34000004,0x0e001400,0xffffeec0,0x00a00040,0x22e02268,0x228d0500,0x008d4600, +0x00a00040,0x23202268,0x228d0520,0x008d4620,0x00a00040,0x23602268,0x228d0540,0x008d4640, +0x00a00040,0x23a02268,0x228d0560,0x008d4660,0x00800040,0x24e01a68,0x1a4002e0,0x004002e2, +0x00a00040,0x24602268,0x228d05c0,0x008d46c0,0x00a00040,0x23e02268,0x228d0580,0x008d4680, +0x00a00040,0x24a02268,0x228d05e0,0x008d46e0,0x00a00040,0x24202268,0x228d05a0,0x008d46a0, +0x00800040,0x22e01a68,0x1a4002e0,0x004042e2,0x00800040,0x25001a68,0x1a400320,0x00400322, +0x00800040,0x23001a68,0x1a400320,0x00404322,0x00800040,0x25201a68,0x1a400360,0x00400362, +0x00800040,0x25401a68,0x1a4003a0,0x004003a2,0x00800040,0x23401a68,0x1a4003a0,0x004043a2, +0x00800040,0x23201a68,0x1a400360,0x00404362,0x00800040,0x23c01a68,0x1a4004a0,0x004044a2, +0x00800040,0x23a01a68,0x1a400460,0x00404462,0x00800040,0x23801a68,0x1a400420,0x00404422, +0x00800040,0x23601a68,0x1a4003e0,0x004043e2,0x00a00008,0x26c01a68,0x1e8d02e0,0x00010001, +0x00a00008,0x27001a68,0x1e8d0320,0x00010001,0x00a00008,0x27801a68,0x1e8d03a0,0x00010001, +0x00a00008,0x27401a68,0x1e8d0360,0x00010001,0x00800040,0x25601a68,0x1a4003e0,0x004003e2, +0x00800040,0x25c01a68,0x1a4004a0,0x004004a2,0x00800040,0x25801a68,0x1a400420,0x00400422, +0x00800040,0x25a01a68,0x1a400460,0x00400462,0x00a00001,0x22e01a48,0x008d26c0,0x00000000, +0x00a00001,0x23201a48,0x008d2700,0x00000000,0x00a00001,0x23a01a48,0x008d2780,0x00000000, +0x00a00001,0x23601a48,0x008d2740,0x00000000,0x00600040,0x45e01a68,0x1a6004e0,0x006004e4, +0x00600040,0x46001a68,0x1a600520,0x00600524,0x00600040,0x44001a68,0x1a600520,0x00604524, +0x00600040,0x43e01a68,0x1a6004e0,0x006044e4,0x00600040,0x46201a68,0x1a600560,0x00600564, +0x00600040,0x44201a68,0x1a600560,0x00604564,0x00600040,0x44401a68,0x1a6005a0,0x006045a4, +0x00600040,0x46401a68,0x1a6005a0,0x006005a4,0x00600040,0x45e21a68,0x1a6004e2,0x006004e6, +0x00600040,0x46021a68,0x1a600522,0x00600526,0x00600040,0x44021a68,0x1a600522,0x00604526, +0x00600040,0x43e21a68,0x1a6004e2,0x006044e6,0x00600040,0x46221a68,0x1a600562,0x00600566, +0x00600040,0x44221a68,0x1a600562,0x00604566,0x00600040,0x44421a68,0x1a6005a2,0x006045a6, +0x00600040,0x46421a68,0x1a6005a2,0x006005a6,0x00800040,0x25401a68,0x1a4003a0,0x004003a2, +0x00800040,0x25201a68,0x1a400360,0x00400362,0x00800040,0x25001a68,0x1a400320,0x00400322, +0x00800040,0x24e01a68,0x1a4002e0,0x004002e2,0x00800040,0x26601a68,0x1a4005e0,0x004005e2, +0x00a00008,0x27c01a68,0x1e8d03e0,0x00010001,0x00a00008,0x28001a68,0x1e8d0420,0x00010001, +0x00800040,0x26801a68,0x1a400620,0x00400622,0x00800040,0x25801a68,0x1a400520,0x00400522, +0x00800040,0x25601a68,0x1a4004e0,0x004004e2,0x00800040,0x24601a68,0x1a4005e0,0x004045e2, +0x00800040,0x24801a68,0x1a400620,0x00404622,0x00a00001,0x23e01a48,0x008d27c0,0x00000000, +0x00a00001,0x24201a48,0x008d2800,0x00000000,0x00800040,0x26a01a68,0x1a400660,0x00400662, +0x00800040,0x24a01a68,0x1a400660,0x00404662,0x00800040,0x25a01a48,0x1a400560,0x00400562, +0x00a00008,0x28401a68,0x1e8d0460,0x00010001,0x0080000c,0x26401a28,0x1e8d06a0,0x00010001, +0x00800040,0x25801a68,0x1a400420,0x00400422,0x00800040,0x25601a68,0x1a4003e0,0x004003e2, +0x00a00008,0x28801a68,0x1e8d04a0,0x00010001,0x00a00001,0x24601a48,0x008d2840,0x00000000, +0x00800001,0x46c00a48,0x008d2640,0x00000000,0x00800040,0x25c01a48,0x1a400560,0x00400562, +0x00a00001,0x24a01a48,0x008d2880,0x00000000,0x00800040,0x26001a48,0x1a400460,0x00400462, +0x00800001,0x26801248,0x004006c0,0x00000000,0x00800040,0x25a01248,0x128d05a0,0x008d05c0, +0x00000041,0x25801208,0x160000dc,0x08a008a0,0x00200001,0x22b01e08,0x00000000,0x00000000, +0x00800040,0x27001a48,0x128d04a0,0x008d0680,0x00800040,0x25a01248,0x128d05a0,0x008d0600, +0x00000040,0x25c00208,0x16000580,0x00800080,0x00800040,0x25a01248,0x128d05a0,0x008d0700, +0x0000000c,0x22e00208,0x160005c0,0x00080008,0x04600002,0x24e01248,0x128d05a0,0x008d05b0, +0x00600001,0x25001268,0x008d04e0,0x00000000,0x04400002,0x22c01a48,0x1a690500,0x00690508, +0x00400001,0x25201268,0x006902c0,0x00000000,0x04200002,0x22a41a48,0x1a450520,0x00450524, +0x04000002,0x25401248,0x120002a4,0x000002a6,0x00200001,0x25601248,0x00000540,0x00000000, +0x04000002,0x22b41208,0x02000560,0x000002b4,0x04000010,0x20000200,0x020002b4,0x000002e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29181608,0x00000000,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29181608,0x00000000,0x00000000, +0x00000001,0x62a4028c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000, +0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000360, +0x02000010,0x20002260,0x1e0008cc,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000160, +0x00000041,0x22a41228,0x160000de,0x06400640,0x00000041,0x22e41228,0x160000de,0x03800380, +0x00000040,0x22c00a28,0x1e0002a4,0x00800080,0x00000040,0x23000a28,0x1e0002e4,0x00800080, +0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x0000000c,0x29180a08,0x1e000300,0x00080008, +0x04000010,0x20001200,0x020008fc,0x000002e0,0x00010020,0x34000004,0x0e001400,0x000000a0, +0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000060, +0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29181e28,0x00000000,0x00030003,0x00000020,0x34000004,0x0e001400,0x00000050, +0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x29181e28,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x29181e28,0x00000000,0x00000000,0x00000001,0x62a40a8c,0x00000918,0x00000000, +0x00000001,0x48ce2288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x000001e0, +0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000120, +0x00000041,0x22a41228,0x160000de,0x06400640,0x00000041,0x22e41228,0x160000de,0x03800380, +0x00000040,0x22c00a28,0x1e0002a4,0x00800080,0x00000040,0x23000a28,0x1e0002e4,0x00800080, +0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x0000000c,0x29180a08,0x1e000300,0x00080008, +0x04000010,0x20001200,0x020008fc,0x000002e0,0x00010020,0x34000004,0x0e001400,0x00000060, +0x04000010,0x20001200,0x020008fc,0x00000918,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29181e28,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x29181e28,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x29181e28,0x00000000,0x00000000,0x00000001,0x62a40a8c,0x00000918,0x00000000, +0x00000001,0x48ce2288,0x000002a4,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000a0, +0x00000041,0x22a41228,0x160000de,0x06400640,0x00000040,0x22c00a28,0x1e0002a4,0x00800080, +0x0000000c,0x22e00a08,0x1e0002c0,0x00080008,0x04000010,0x20001200,0x020008fc,0x000002e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29181e28,0x00000000,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29181e28,0x00000000,0x00000000, +0x00000001,0x62a40a8c,0x00000918,0x00000000,0x00000001,0x48ce2288,0x000002a4,0x00000000, +0x01000010,0x20002260,0x1e000025,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000b50, +0x01000010,0x20002260,0x1e000034,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000b30, +0x00000001,0x22a41e68,0x00000000,0x00010001,0x03000010,0x20002260,0x1e000037,0x00bf00bf, +0x00000001,0x29501e28,0x00000000,0x00010001,0x00000001,0x29441608,0x00000000,0x00000000, +0x00000001,0x29481e08,0x00000000,0x00000000,0x00010002,0x49581a88,0x1e0002a4,0x00000000, +0x05000010,0x20002260,0x1e000037,0x003f003f,0x00010002,0x49541a88,0x1e0002a4,0x00000000, +0x01000010,0x20002260,0x1e0008c8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000040,0x22a80208,0x02000054,0x00000058,0x00000009,0x22a40208,0x1600004c,0x00020002, +0x00000040,0x22c00208,0x020002a8,0x0000005c,0x0c000038,0x291c0208,0x020002a4,0x000002c0, +0x00000020,0x34000004,0x0e001400,0x00000010,0x0c000038,0x291c0208,0x02000048,0x00000050, +0x02000010,0x20002260,0x1e0008cc,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000320, +0x00000040,0x22a41228,0x16000020,0x000f000f,0x00000005,0x22c41228,0x0e00090a,0x0000fffe, +0x00000005,0x22d41228,0x0e000908,0x0000fffe,0x00000040,0x22000204,0x060002c8,0x02484400, +0x00000001,0x49181e88,0x00000000,0x00010001,0x00000001,0x494c1e88,0x00000000,0x00000000, +0x0000000c,0x42c00a48,0x1e0002a4,0x00040004,0x00000040,0x23c00a28,0x1e0002c4,0x00010001, +0x00000041,0x22cc0a28,0x120002c4,0x000002c0,0x00000041,0x23e00a28,0x120003c0,0x000002c0, +0x00000040,0x22e00a28,0x0a0002cc,0x000002d4,0x00000040,0x24000a28,0x0a0003e0,0x000002d4, +0x00000041,0x23000a28,0x1e0002e0,0x00340034,0x00000041,0x22a40a28,0x1e000400,0x00340034, +0x00000001,0x22e01e68,0x00000000,0x00010001,0x00000001,0x23280a0c,0x00000300,0x00000000, +0x00000001,0x24280a0c,0x000002a4,0x00000000,0x0a800031,0x23403a6c,0x00000320,0x00000200, +0x0a800031,0x24403a6c,0x00000420,0x00000200,0x03000010,0x20000200,0x16000354,0x00800080, +0x03110010,0x20000200,0x16000388,0x00800080,0x03110010,0x20000200,0x16000454,0x00800080, +0x03110010,0x20000200,0x16000488,0x00800080,0x00010002,0x42e41a88,0x1e0002e0,0x00000000, +0x04000010,0x20000200,0x16000354,0x04000400,0x04110010,0x20000200,0x16000388,0x04000400, +0x04110010,0x20000200,0x16000454,0x04000400,0x04110010,0x20000200,0x16000488,0x04000400, +0x00010002,0x495c1a88,0x1e0002e0,0x00000000,0x01000010,0x20002260,0x1e0002e4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x49181e88,0x00000000,0x00000000, +0x01000010,0x20002260,0x1e00095c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x494c1e88,0x00000000,0x00010001,0x06000010,0x20002260,0x1e0008c8,0x00090009, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29481a08,0x1a0028d0,0x000028d2, +0x03000010,0x20002260,0x1e0008c8,0x00090009,0x00010020,0x34000004,0x0e001400,0x00000040, +0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x0000000c,0x29500228,0x160008f4,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000210, +0x06000010,0x20002260,0x1e0008c8,0x00090009,0x00010020,0x34000004,0x0e001400,0x000001f0, +0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001d0, +0x0000000c,0x29500228,0x160008f0,0x00020002,0x00000020,0x34000004,0x0e001400,0x000001b0, +0x00000040,0x22a41228,0x16000020,0x000f000f,0x00000040,0x22000204,0x060002c8,0x02284300, +0x00000001,0x23a01e68,0x00000000,0x00010001,0x0000000c,0x42c00a48,0x1e0002a4,0x00040004, +0x00000041,0x22e01228,0x120002c0,0x0000090a,0x00000040,0x23000a28,0x120002e0,0x00000908, +0x00000041,0x23200a28,0x1e000300,0x00340034,0x00000001,0x23480a0c,0x00000320,0x00000000, +0x0a800031,0x23603a6c,0x00000340,0x00000200,0x06000010,0x20000200,0x16000374,0x00800080, +0x00010002,0x49181a88,0x1e0003a0,0x00000000,0x03000010,0x20000200,0x16000374,0x04000400, +0x00010002,0x494c1a88,0x1e0003a0,0x00000000,0x01000010,0x20002260,0x1e0008c4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29481a08,0x1a0028d0,0x000028d2, +0x02000010,0x20002260,0x1e0008c4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040, +0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29500228,0x000008f4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050, +0x01000010,0x20002260,0x1e0008c4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030, +0x06000010,0x20000200,0x1600091c,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x29500228,0x000008f0,0x00000000,0x02000010,0x20002260,0x1e000918,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000040,0x03000010,0x20000200,0x16000948,0x00200020, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000110,0x02000010,0x20002260,0x1e00094c,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000040,0x03000010,0x20000200,0x16000948,0x00200020, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00030003, +0x00000020,0x34000004,0x0e001400,0x000000b0,0x02000010,0x20002260,0x1e000918,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000040,0x05000010,0x20000200,0x16000948,0x00800080, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441608,0x00000000,0x00020002, +0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260,0x1e00094c,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000030,0x05000010,0x20000200,0x16000948,0x00800080, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x29441608,0x00000000,0x00040004, +0x02000010,0x20000200,0x16000944,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000370, +0x02000010,0x20000200,0x16000944,0x00030003,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000310, +0x02000010,0x20000200,0x16000944,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00060006,0x00000020,0x34000004,0x0e001400,0x000002b0, +0x02000010,0x20000200,0x16000944,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00070007,0x00000020,0x34000004,0x0e001400,0x00000250, +0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x000d000d, +0x06000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00060006,0x00000020,0x34000004,0x0e001400,0x000001d0, +0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x000b000b, +0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000958,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00050005,0x00000020,0x34000004,0x0e001400,0x00000150, +0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00090009, +0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000f0, +0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00070007, +0x05000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x49401e88,0x00000000,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000070, +0x00000041,0x22a40a08,0x1e000950,0x000a000a,0x00000041,0x22a80208,0x1600091c,0x00070007, +0x04000010,0x20000200,0x020002a4,0x000002a8,0x00010020,0x34000004,0x0e001400,0x00000030, +0x02000010,0x20002260,0x1e000954,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49401e88,0x00000000,0x00030003,0x0020000c,0x24d01208,0x16450908,0x00020002, +0x00200040,0x22a41248,0x16450020,0x003f003f,0x00600001,0x22e02648,0x00000000,0x32103210, +0x00000041,0x23641208,0x1600090c,0x00030003,0x00600001,0x22f02648,0x00000000,0x32103210, +0x00000001,0x295c0e28,0x00000000,0x0f0e0b0a,0x00000001,0x29580e28,0x00000000,0x0d0c0908, +0x00200001,0x24c41248,0x006604d0,0x00000000,0x00200008,0x291c1248,0x164502a4,0x00060006, +0x00600001,0x23201208,0x008d02e0,0x00000000,0x00600001,0x23001208,0x008d02e0,0x00000000, +0x00000041,0x22a41208,0x1600090c,0x00020002,0x00600001,0x22e02648,0x00000000,0x32103210, +0x00000001,0x29540e28,0x00000000,0x07060302,0x00200009,0x23401248,0x164504c4,0x00020002, +0x00000041,0x22c01228,0x120004c6,0x0000091c,0x00400040,0x23300208,0x02690330,0x00000364, +0x00400040,0x23100208,0x12690310,0x0000090c,0x602d2140,0x15191905,0x00000001,0x29500e28, +0x00000000,0x05040100,0x20004d01,0x00002007,0x00000041,0x23441228,0x12000342,0x0000090c, +0x00000040,0x24c00a08,0x120002c0,0x000004c4,0x00200040,0x22c01248,0x1245090c,0x00454340, +0x00000040,0x22000204,0x060002d0,0x0228c300,0x00800009,0x23800208,0x168d0300,0x00040004, +0x00600001,0x24202648,0x00000000,0x11110000,0x00000040,0x23600a08,0x12000344,0x00000340, +0x00600001,0x24302648,0x00000000,0x33332222,0x04800010,0x20001260,0x128d02e0,0x000002c0, +0x00800040,0x23c00208,0x168d0380,0x000b000b,0x00800041,0x23002248,0x168d0950,0x00040004, +0x00000009,0x24080208,0x16000360,0x00040004,0x00000001,0x29181608,0x00000000,0x00000000, +0x0a800033,0x0441e078,0x00002402,0x00000000,0x00810001,0x24401608,0x00000000,0x00000000, +0x04800010,0x20001260,0x128d0420,0x000002c2,0x00600040,0x22001240,0x168d0300,0x04400440, +0x00810001,0x24401608,0x00000000,0x00000000,0x00600001,0x23200208,0x01e08000,0x00000000, +0x00600040,0x22001240,0x168d0310,0x04400440,0x00600001,0x23400208,0x01e08000,0x00000000, +0x00600040,0x22e02248,0x22600320,0x00600340,0x00800001,0x24902288,0x00600321,0x00000000, +0x00800001,0x24802288,0x00600320,0x00000000,0x00000001,0x44c81e88,0x00000000,0x00000000, +0x00000001,0x491a1e88,0x00000000,0x00100010,0x00400040,0x22e01248,0x126902e0,0x006902e8, +0x00200040,0x22e01248,0x124502e0,0x004502e4,0x00000040,0x44ca1288,0x120002e0,0x000002e2, +0x00000041,0x22a42228,0x1e0004c8,0x00040004,0x00000001,0x62a80a88,0x000002a4,0x00000000, +0x00000040,0x22001240,0x160002a4,0x04800480,0x00000040,0x22c02228,0x1e0002a8,0x00010001, +0x00000001,0x22c42228,0x00008000,0x00000000,0x00000040,0x22001240,0x160002c0,0x04800480, +0x00000040,0x22e00a28,0x220002c4,0x00008000,0x00000040,0x23000a28,0x220002e0,0x00008001, +0x01000040,0x60000a81,0x22000300,0x00008002,0x00000001,0x23201e68,0x00000000,0x00010001, +0x00000040,0x22001240,0x160002a4,0x04900490,0x00000009,0x43401a88,0x22000320,0x000004c8, +0x02000010,0x20002220,0x1e008000,0x00090009,0x00010002,0x44cc2288,0x1e000340,0x00000000, +0x00010001,0x44cc1e89,0x00000000,0x00000000,0x01000010,0x20002260,0x1e0004cc,0x00000000, +0x00000006,0x491a2288,0x2200091a,0x000004cc,0x00010020,0x34000004,0x0e001400,0x000000f0, +0x00000001,0x44ce1e88,0x00000000,0x00000000,0x00000041,0x22a42228,0x1e0004c8,0x00040004, +0x00000040,0x22c00a28,0x220002a4,0x000004ce,0x00000040,0x22001240,0x160002c0,0x04900490, +0x06000010,0x20002220,0x1e008000,0x00030003,0x00000001,0x22c41e68,0x00000000,0x00010001, +0x00000040,0x22001240,0x160002c0,0x04800480,0x00010002,0x44cc1a88,0x1e0002c4,0x00000000, +0x01000010,0x20002220,0x1e008000,0x00000000,0x00010001,0x44cc1e88,0x00000000,0x00000000, +0x00000040,0x44ce2288,0x1e0004ce,0x00010001,0x00000009,0x22e02228,0x0a0004cc,0x000002c0, +0x05000010,0x20002260,0x1e0004ce,0x00040004,0x00000006,0x49181248,0x0a000918,0x000002e0, +0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000040,0x44c82288,0x1e0004c8,0x00010001, +0x05000010,0x20002260,0x1e0004c8,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffdc0, +0x00200009,0x22b01208,0x164504c4,0x00020002,0x00200040,0x62c01288,0x02450908,0x004542b0, +0x00200001,0x22e02288,0x006002c0,0x00000000,0x00000041,0x22e42228,0x1e0002e1,0x00040004, +0x00000040,0x23000a28,0x220002e4,0x000002e0,0x00000040,0x22001240,0x16000300,0x09500950, +0x02000001,0x60000a80,0x00000300,0x00000000,0x00000001,0x43202288,0x00008000,0x00000000, +0x00000040,0x22002240,0x16000320,0x04800480,0x00000001,0x44942288,0x00008000,0x00000000, +0x00000001,0x23380e28,0x00000000,0x0b0a0908,0x00000001,0x23340e28,0x00000000,0x07060504, +0x00000001,0x23300e28,0x00000000,0x03020100,0x00000001,0x233c0e28,0x00000000,0x0f0e0d0c, +0x00000001,0x42a41e8c,0x00000000,0x00000000,0x00000009,0x22c40208,0x160004c0,0x00060006, +0x04800010,0x20002261,0x228d0330,0x00000320,0x00810001,0x24802289,0x000002a4,0x00000000, +0x00600040,0x22e02248,0x228d0480,0x008d0488,0x00400040,0x22e01248,0x126902e0,0x006902e8, +0x00200040,0x22e01248,0x124502e0,0x004502e4,0x00000040,0x42c01288,0x120002e0,0x000002e2, +0x00000040,0x23000208,0x220002c4,0x000002c0,0x00000009,0x24900208,0x16000300,0x00060006, +0x00010020,0x34000004,0x0e001400,0x00000120,0x00000040,0x22a40208,0x160004c0,0x00010001, +0x00000041,0x22a81208,0x1200091c,0x0000091e,0x00000001,0x22c01e68,0x00000000,0x00c000c0, +0x00000040,0x22f02228,0x1e0004ca,0xffffffff,0x00000001,0x23200608,0x00000000,0x05000000, +0x00000009,0x23400228,0x160004c0,0x00040004,0x00200001,0x22e81248,0x006604d0,0x00000000, +0x00000001,0x22e00608,0x00000000,0x73b50001,0x01000010,0x20000200,0x020002a4,0x000002a8, +0x00000040,0x22000204,0x060002dc,0x020a0000,0x00000008,0x23680a08,0x1e000340,0x00040004, +0x00010002,0x44cc1a88,0x1e0002c0,0x00000000,0x00000006,0x63000a8c,0x220002f0,0x000004cc, +0x03000010,0x20002260,0x1e0004cc,0x00000000,0x00000001,0x491b2288,0x00000300,0x00000000, +0x00010002,0x22ec0208,0x16000320,0x00000000,0x00000001,0x22e40208,0x00000918,0x00000000, +0x0a400033,0x00017014,0x00002361,0x00000000,0x02000010,0x20002260,0x1e000494,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000018,0x20004d01,0x00007d07,0x07000031,0x20003a00, +0x06000fa0,0x82000010,0x02000005,0x20002260,0x160008cf,0x00010001,0x00000001,0x44801e88, +0x00000000,0x00000000,0x00800001,0x23801e08,0x00000000,0x00000000,0x00000001,0x24821648, +0x00000000,0x00000000,0x00600001,0x23c01608,0x00000000,0x00000000,0x00010002,0x44842288, +0x22000035,0x00000036,0x01000010,0x20002260,0x1e0008ce,0x00010001,0x00010001,0x44801e88, +0x00000000,0x00010001,0x02000005,0x20002260,0x160008cf,0x00010001,0x00010001,0x44801e88, +0x00000000,0x00010001,0x01000010,0x20002260,0x1e0008ce,0x00000000,0x00010001,0x44801e88, +0x00000000,0x00020002,0x01000010,0x20002260,0x1e0008cd,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000120,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88, +0x00000000,0x00020002,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000080,0x03000010,0x20002260,0x1e0008ce,0x00010001,0x00000001,0x43c11e88, +0x00000000,0x00010001,0x00200001,0x23d41248,0x004508d0,0x00000000,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ce2288,0x000008c4,0x00000000,0x00200001,0x23ca2288, +0x000008ce,0x00000000,0x00010001,0x44801e88,0x00000000,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000c98,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00400001,0x23c62288, +0x000002a4,0x00000000,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000c38,0x02000010,0x20002260,0x1e0008cc,0x00060006,0x00010020,0x34000004, +0x0e001400,0x00000100,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88, +0x00000000,0x00010001,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000060,0x00000001,0x43c11e88,0x00000000,0x00010001,0x00200001,0x23d41248, +0x004508d0,0x00000000,0x00200001,0x24822288,0x00000940,0x00000000,0x00200001,0x23ce2288, +0x000008c4,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000b78,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00400001,0x23c62288, +0x000002a4,0x00000000,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000b18,0x02000010,0x20002260,0x1e0008cc,0x00050005,0x00010020,0x34000004, +0x0e001400,0x000000d0,0x00000001,0x43c01e88,0x00000000,0x00010001,0x01000010,0x20002260, +0x1e0008cf,0x00000000,0x00000001,0x43c22288,0x000003c0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000ab8,0x00000001,0x43ca2288,0x000008ce,0x00000000,0x00000001,0x43cf2288, +0x000008c6,0x00000000,0x00200001,0x23dc1248,0x004508d8,0x00000000,0x00000001,0x43ce2288, +0x000008c4,0x00000000,0x00200001,0x24822288,0x00000940,0x00000000,0x00000001,0x43c11e88, +0x00000000,0x00010001,0x00200001,0x23d41248,0x004508d0,0x00000000,0x00000001,0x43cb2288, +0x000003ca,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000a28,0x01000010,0x20002260, +0x1e0008cc,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000948,0x06000010,0x20002260, +0x1e000494,0x00000000,0x00000001,0x44861e88,0x00000000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000900,0x02000010,0x20002260,0x1e0008cc,0x00030003,0x00010020,0x34000004, +0x0e001400,0x00000510,0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000c0,0x00000001,0x43c01e88,0x00000000,0x00000000,0x00000040,0x22002240, +0x16000486,0x08c008c0,0x00000001,0x43c11e88,0x00000000,0x00010001,0x00000001,0x43c22288, +0x000003c0,0x00000000,0x00200001,0x23ce2288,0x00008004,0x00000000,0x00000041,0x22a42228, +0x1e000486,0x00020002,0x00000041,0x22c01248,0x160002a4,0x00020002,0x00000040,0x22001240, +0x160002c0,0x08c008c0,0x00200001,0x23d41248,0x00208010,0x00000000,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000550,0x02000010,0x20001240,0x12000910,0x00000912,0x00010020,0x34000004, +0x0e001400,0x00000120,0x02000010,0x20001240,0x12000910,0x00000914,0x00010020,0x34000004, +0x0e001400,0x00000100,0x02000010,0x20001240,0x12000914,0x00000916,0x00010020,0x34000004, +0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20, +0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228, +0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004, +0x0e001400,0x00000080,0x00000005,0x42a41288,0x16000910,0x000f000f,0x00000001,0x43c01e88, +0x00000000,0x00010001,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00200001,0x24822288, +0x00000940,0x00000000,0x00000001,0x43c21e88,0x00000000,0x00000000,0x00200001,0x23c62288, +0x000002a4,0x00000000,0x00200001,0x23c42288,0x004503c6,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000410,0x02000010,0x20001240,0x12000910,0x00000912,0x00010020,0x34000004, +0x0e001400,0x00000100,0x02000010,0x20001240,0x12000914,0x00000916,0x00010020,0x34000004, +0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20, +0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228, +0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004, +0x0e001400,0x00000080,0x00000001,0x43c01e88,0x00000000,0x00010001,0x00000005,0x43c61288, +0x16000910,0x000f000f,0x00000005,0x43c71288,0x16000914,0x000f000f,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00000001,0x43c22288, +0x000003c0,0x00000000,0x00200001,0x23c42288,0x000003c6,0x00000000,0x00000020,0x34000004, +0x0e001400,0x000002f0,0x02000010,0x20001240,0x12000910,0x00000914,0x00010020,0x34000004, +0x0e001400,0x00000100,0x02000010,0x20001240,0x12000912,0x00000916,0x00010020,0x34000004, +0x0e001400,0x000000e0,0x00000040,0x22a41228,0x16000900,0x00100010,0x04000010,0x20000a20, +0x120002a4,0x00000904,0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000040,0x22a41228, +0x16000902,0x00100010,0x04000010,0x20000a20,0x120002a4,0x00000906,0x00010020,0x34000004, +0x0e001400,0x00000080,0x00000005,0x43c61288,0x16000910,0x000f000f,0x00000001,0x43c21e88, +0x00000000,0x00020002,0x00000005,0x43c71288,0x16000912,0x000f000f,0x00000001,0x43c01e88, +0x00000000,0x00010001,0x00200001,0x24822288,0x00000940,0x00000000,0x00200001,0x23ca2288, +0x000008ce,0x00000000,0x00200001,0x23c42288,0x000003c6,0x00000000,0x00000020,0x34000004, +0x0e001400,0x000001d0,0x00000041,0x22a42248,0x16000486,0x00020002,0x00000001,0x43c01e88, +0x00000000,0x00000000,0x00000040,0x22001240,0x160002a4,0x09100910,0x00000001,0x43c22288, +0x000003c0,0x00000000,0x00000005,0x42c01288,0x1e008000,0x000f000f,0x00200001,0x23c62288, +0x000002c0,0x00000000,0x00000005,0x42e01288,0x1e008000,0x000f000f,0x00200001,0x24822288, +0x00000940,0x00000000,0x00200001,0x23ca2288,0x000008ce,0x00000000,0x00200001,0x23c42288, +0x000002e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000120,0x02000010,0x20002260, +0x1e0008cf,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100,0x00000040,0x22002240, +0x16000486,0x08c008c0,0x00000001,0x43c01e88,0x00000000,0x00000000,0x00000001,0x43c21e88, +0x00000000,0x00030003,0x00000005,0x42a42288,0x1e008028,0x000f000f,0x00000041,0x22c02248, +0x16000486,0x00020002,0x00200001,0x23c42288,0x000002a4,0x00000000,0x00000040,0x22001240, +0x160002c0,0x09100910,0x00000005,0x43c61288,0x1e008000,0x000f000f,0x0000000c,0x22e01228, +0x1e008000,0x00040004,0x00000005,0x63000a8c,0x1e0002e0,0x000f000f,0x00000001,0x43c72288, +0x00000300,0x00000000,0x0000000c,0x23201228,0x1e008000,0x00080008,0x00000005,0x63c80a88, +0x1e000320,0x000f000f,0x0000000c,0x43c91288,0x1e008000,0x000c000c,0x00200001,0x24822288, +0x00000940,0x00000000,0x00000001,0x23ca1648,0x00000000,0x00000000,0x00000005,0x22a42228, +0x1e0003c0,0x00030003,0x00000009,0x22a82228,0x1e0003c2,0x00040004,0x00000009,0x22c02228, +0x1e0003c1,0x00040004,0x00000009,0x22e42228,0x1e0003c1,0x00050005,0x00000040,0x43aa2288, +0x22000484,0x00000480,0x00200001,0x23881248,0x004503d4,0x00000000,0x00000001,0x43831e88, +0x00000000,0x00000000,0x00000009,0x23602228,0x1e0003cb,0x00020002,0x00000006,0x63800a88, +0x0a0002a4,0x000002a8,0x00000005,0x22a82228,0x1e0003cf,0x00030003,0x00000006,0x22e02228, +0x0a0003c5,0x000002c0,0x00000005,0x22a42228,0x1e0003ce,0x00030003,0x00000009,0x23202228, +0x1e0003aa,0x00040004,0x00000040,0x44862288,0x1e000486,0x00010001,0x00200005,0x43842288, +0x1e4003c6,0x000f000f,0x00000008,0x22e80a08,0x1e000490,0x00040004,0x00000009,0x22c00a28, +0x1e0002a8,0x00040004,0x00000006,0x63000a8c,0x0a0002e0,0x000002e4,0x00000005,0x22e42228, +0x1e0003d1,0x00030003,0x00000006,0x6340228c,0x0a0003aa,0x00000320,0x00000005,0x22e02228, +0x1e0003d0,0x00030003,0x00600001,0x23981648,0x00000000,0x00000000,0x00000001,0x43812288, +0x000003c4,0x00000000,0x00000006,0x63a80a88,0x0a0002a4,0x000002c0,0x00000009,0x22a42228, +0x1e000483,0x00030003,0x00000001,0x43822288,0x00000300,0x00000000,0x00000009,0x23000a28, +0x1e0002e4,0x00040004,0x00000040,0x22000204,0x060002d8,0x020a0300,0x00200001,0x23941248, +0x00450388,0x00000000,0x00200001,0x238c1248,0x00450388,0x00000000,0x00200001,0x23901248, +0x00450388,0x00000000,0x00000006,0x62c00a8c,0x220002a4,0x00000482,0x00000001,0x43ad2288, +0x00000383,0x00000000,0x00000001,0x43af2288,0x00000383,0x00000000,0x00000006,0x63ac0a88, +0x22000360,0x000003ca,0x00200005,0x43852288,0x1e4003c7,0x000f000f,0x00000001,0x43aa2288, +0x00000340,0x00000000,0x00000006,0x63a90a88,0x0a0002e0,0x00000300,0x00000001,0x43ae2288, +0x000002c0,0x00000000,0x05000010,0x20002260,0x22000486,0x00000494,0x00000040,0x24900208, +0x16000490,0x00400040,0x0a800033,0x0001c054,0x000022e2,0x00000000,0x00010020,0x34000004, +0x0e001400,0xfffff700,0x20004d01,0x00007e07,0x07000031,0x20003a00,0x06000fc0,0x82000010, +0x01000010,0x20002260,0x1e0008cf,0x00000000,0x00000001,0x43c01e88,0x00000000,0x00010001, +0x00000001,0x43c21e88,0x00000000,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000080, +0x00000001,0x43ca2288,0x000008ce,0x00000000,0x00000001,0x43cf2288,0x000008c5,0x00000000, +0x00200001,0x23dc1248,0x004508d4,0x00000000,0x00000001,0x43ce2288,0x000008c4,0x00000000, +0x00200001,0x24822288,0x00000940,0x00000000,0x00000001,0x43c11e88,0x00000000,0x00010001, +0x00200001,0x23d41248,0x004508d0,0x00000000,0x00000001,0x43cb2288,0x000003ca,0x00000000, +0x00000005,0x22a42228,0x1e0003c0,0x00030003,0x00000009,0x22a82228,0x1e0003c2,0x00040004, +0x00000009,0x22c02228,0x1e0003c1,0x00040004,0x00000009,0x22e42228,0x1e0003c1,0x00050005, +0x00000040,0x43aa2288,0x22000484,0x00000480,0x00000001,0x43831e88,0x00000000,0x00000000, +0x00000009,0x23602228,0x1e0003cb,0x00020002,0x00200005,0x43842288,0x1e4003c6,0x000f000f, +0x00000006,0x63800a88,0x0a0002a4,0x000002a8,0x00000005,0x22a82228,0x1e0003cf,0x00030003, +0x00000006,0x22e02228,0x0a0003c5,0x000002c0,0x00000005,0x22a42228,0x1e0003ce,0x00030003, +0x00000009,0x23202228,0x1e0003aa,0x00040004,0x00000008,0x22e80a08,0x1e000490,0x00040004, +0x00600001,0x23981648,0x00000000,0x00000000,0x00400001,0x23901648,0x00000000,0x00000000, +0x00000009,0x22c00a28,0x1e0002a8,0x00040004,0x00000006,0x63000a8c,0x0a0002e0,0x000002e4, +0x00000005,0x22e42228,0x1e0003d1,0x00030003,0x00000006,0x6340228c,0x0a0003aa,0x00000320, +0x00000005,0x22e02228,0x1e0003d0,0x00030003,0x00200001,0x238c1248,0x004503dc,0x00000000, +0x00200001,0x23881248,0x004503d4,0x00000000,0x00000006,0x63a80a88,0x0a0002a4,0x000002c0, +0x00000009,0x22a42228,0x1e000483,0x00030003,0x00000001,0x43822288,0x00000300,0x00000000, +0x00000009,0x23000a28,0x1e0002e4,0x00040004,0x00000001,0x43812288,0x000003c4,0x00000000, +0x00000040,0x22000204,0x060002d8,0x020a0300,0x00000001,0x43af2288,0x00000383,0x00000000, +0x00000001,0x43ad2288,0x00000383,0x00000000,0x00000006,0x62c00a8c,0x220002a4,0x00000482, +0x00000006,0x63ac0a88,0x22000360,0x000003ca,0x00200005,0x43852288,0x1e4003c7,0x000f000f, +0x00000001,0x43aa2288,0x00000340,0x00000000,0x00000006,0x63a90a88,0x0a0002e0,0x00000300, +0x00000001,0x43ae2288,0x000002c0,0x00000000,0x0a800033,0x0001c054,0x000022e2,0x00000000, +0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c, +0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00000005,0x206c124c,0x16000004,0x07ff07ff,0x00000005,0x206e124c,0x16000006,0x07ff07ff, +0x00800001,0x20801608,0x00000000,0x00000000,0x00000001,0x20701248,0x0000006c,0x00000000, +0x00000001,0x20721248,0x0000006e,0x00000000,0x00200041,0x20c01228,0x16450070,0x00100010, +0x00200001,0x20d00ae8,0x004500c0,0x00000000,0x00200041,0x20e03ae8,0x3a4500d0,0x00450028, +0x00000001,0x29b83ee8,0x00000000,0x00000000,0x20004b01,0x00004c07,0x00000001,0x29880608, +0x00000000,0x00000000,0x00000001,0x29a03ee8,0x00000000,0x00000000,0x00000001,0x29a41e08, +0x00000000,0x00000000,0x00000001,0x29a83ae8,0x000000e0,0x00000000,0x00000001,0x29ac3ae8, +0x000000e4,0x00000000,0x00000001,0x29b03ae8,0x00000028,0x00000000,0x00000001,0x29b43ae8, +0x0000002c,0x00000000,0x00000001,0x29bc1608,0x00000000,0x00000000,0x00000040,0x22000204, +0x06000060,0x050eb000,0x00000009,0x20c8020c,0x06000068,0x00000008,0x00000040,0x22000004, +0x02000200,0x000000c8,0x02800031,0x21003a48,0x00000980,0x00000200,0x00000001,0x29f83ee8, +0x00000000,0x00000000,0x20004b01,0x004c4e07,0x00000001,0x29e03ee8,0x00000000,0x00000000, +0x00000001,0x29e41e08,0x00000000,0x00010001,0x00000001,0x29e83ae8,0x000000e0,0x00000000, +0x00000001,0x29ec3ae8,0x000000e4,0x00000000,0x00000001,0x29f03ae8,0x00000028,0x00000000, +0x00000001,0x29f43ae8,0x0000002c,0x00000000,0x00000001,0x29fc1608,0x00000000,0x00000000, +0x00000040,0x22000204,0x06000060,0x050eb000,0x00000009,0x20cc020c,0x06000068,0x00000008, +0x00000040,0x22000004,0x02000200,0x000000cc,0x02800031,0x23003a48,0x000009c0,0x00000200, +0x00000001,0x2a383ee8,0x00000000,0x00000000,0x20004b01,0x004e5007,0x00000001,0x2a203ee8, +0x00000000,0x00000000,0x00000001,0x2a241e08,0x00000000,0x00020002,0x00000001,0x2a283ae8, +0x000000e0,0x00000000,0x00000001,0x2a2c3ae8,0x000000e4,0x00000000,0x00000001,0x2a303ae8, +0x00000028,0x00000000,0x00000001,0x2a343ae8,0x0000002c,0x00000000,0x00000001,0x2a3c1608, +0x00000000,0x00000000,0x00000040,0x22000204,0x06000060,0x050eb000,0x00000009,0x20d8020c, +0x06000068,0x00000008,0x00000040,0x22000004,0x02000200,0x000000d8,0x02800031,0x25003a48, +0x00000a00,0x00000200,0x00000001,0x2a783ee8,0x00000000,0x00000000,0x20004b01,0x00505207, +0x00000001,0x2a603ee8,0x00000000,0x00000000,0x00000001,0x2a641e08,0x00000000,0x00030003, +0x00000001,0x2a683ae8,0x000000e0,0x00000000,0x00000001,0x2a6c3ae8,0x000000e4,0x00000000, +0x00000001,0x2a703ae8,0x00000028,0x00000000,0x00000001,0x2a743ae8,0x0000002c,0x00000000, +0x00000001,0x2a7c1608,0x00000000,0x00000000,0x00000040,0x22000204,0x06000060,0x050eb000, +0x00000009,0x20dc020c,0x06000068,0x00000008,0x00000040,0x22000004,0x02000200,0x000000dc, +0x02800031,0x27003a48,0x00000a40,0x00000200,0x00a00001,0x29002288,0x00400181,0x00000000, +0x00a00001,0x29202288,0x004001c1,0x00000000,0x00a00001,0x29402288,0x00400381,0x00000000, +0x00a00001,0x29602288,0x004003c1,0x00000000,0x00000041,0x20741228,0x1600006c,0x00100010, +0x00000041,0x20781228,0x1600006e,0x00100010,0x20004d01,0x00005407,0x00000001,0x2a88060c, +0x00000000,0x0007000f,0x20284001,0x00035400,0x00000001,0x2a84020c,0x00000078,0x00000000, +0x00000040,0x22000204,0x06000064,0x020a8000,0x0c600033,0x00048014,0x00002a84,0x00000000, +0x00a00001,0x29002288,0x00400581,0x00000000,0x00a00001,0x29202288,0x004005c1,0x00000000, +0x00a00001,0x29402288,0x00400781,0x00000000,0x00a00001,0x29602288,0x004007c1,0x00000000, +0x20004d01,0x00005507,0x00000040,0x2aa40a28,0x1e000078,0x00080008,0x00000001,0x2aa8060c, +0x00000000,0x0007000f,0x20284001,0x00035500,0x00000040,0x22000204,0x06000064,0x020a8000, +0x0c600033,0x00048014,0x00002aa4,0x00000000,0x00600001,0x40802288,0x00600201,0x00000000, +0x00600001,0x40902288,0x00600241,0x00000000,0x00600001,0x40812288,0x00600101,0x00000000, +0x00600001,0x40912288,0x00600141,0x00000000,0x00600001,0x40a02288,0x00600401,0x00000000, +0x00600001,0x40b02288,0x00600441,0x00000000,0x00600001,0x40a12288,0x00600301,0x00000000, +0x00600001,0x40b12288,0x00600341,0x00000000,0x00000041,0x207c1228,0x1600006e,0x00080008, +0x20004d01,0x00005607,0x00000001,0x2ac8060c,0x00000000,0x0003000f,0x20284001,0x00035600, +0x00000001,0x2ac4020c,0x0000007c,0x00000000,0x00000040,0x22000204,0x06000064,0x020a8001, +0x0c600033,0x00004014,0x00002ac2,0x00000000,0x00600001,0x40802288,0x00600601,0x00000000, +0x00600001,0x40902288,0x00600641,0x00000000,0x00600001,0x40812288,0x00600501,0x00000000, +0x00600001,0x40912288,0x00600541,0x00000000,0x00600001,0x40a02288,0x00600801,0x00000000, +0x00600001,0x40b02288,0x00600841,0x00000000,0x00600001,0x40a12288,0x00600701,0x00000000, +0x00600001,0x40b12288,0x00600741,0x00000000,0x20004d01,0x00005707,0x00000040,0x2ae40a28, +0x1e00007c,0x00040004,0x00000001,0x2ae8060c,0x00000000,0x0003000f,0x20284001,0x00035700, +0x00000040,0x22000204,0x06000064,0x020a8001,0x0c600033,0x00004014,0x00002ae2,0x00000000, +0x20004d01,0x00007f07,0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c, +0x00000005,0x20ea124c,0x16000006,0x07ff07ff,0x01000005,0x20e81248,0x16000004,0x07ff07ff, +0x00000001,0x22961e68,0x00000000,0x00810081,0x00600001,0x22602668,0x00000000,0x00000086, +0x00800001,0x21801608,0x00000000,0x00000000,0x00800001,0x21001608,0x00000000,0x00000000, +0x03400010,0x20001261,0x1e0000ea,0x00000000,0x00000009,0x22981208,0x160000ea,0x00040004, +0x00000009,0x22901208,0x160000e8,0x00040004,0x00800001,0x21c01608,0x00000000,0x00000000, +0x00800001,0x22001e68,0x00000000,0x00000000,0x00410002,0x43701a89,0x1e000296,0x007f007f, +0x00800001,0x22201648,0x00000000,0x00000000,0x00800001,0x21401608,0x00000000,0x00000000, +0x00000001,0x40f41e88,0x00000000,0x00000000,0x00200001,0x20f81648,0x00000000,0x7f7f7f7f, +0x00600001,0x22402648,0x00000000,0x75438102,0x00600001,0x22701648,0x00000000,0x7f7f7f7f, +0x00600001,0x22801648,0x00000000,0x81818181,0x0020000c,0x20ec1248,0x16450020,0x00040004, +0x00200001,0x22501a48,0x00450260,0x00000000,0x00000001,0x429c0268,0x00000298,0x00000000, +0x00000001,0x42940268,0x00000290,0x00000000,0x00400001,0x20fc2288,0x00400370,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000098,0x20004d01,0x00002407,0x00000040,0x22000204, +0x060000e0,0x02390000,0x00000001,0x2488060c,0x00000000,0x00170003,0x00000040,0x24841a28, +0x1e00029c,0xffffffff,0x00000040,0x24801a28,0x1e000294,0xfffcfffc,0x03400010,0x20001260, +0x1e0000ea,0x00000000,0x0c600031,0x22a03a0c,0x00000480,0x00000200,0x00600001,0x22882288, +0x006002c7,0x00000000,0x00600001,0x22802288,0x006002a7,0x00000000,0x00410001,0x20fc2288, +0x000002a3,0x00000000,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000c0,0x20004d01,0x00002507,0x00000040,0x22000204,0x060000e0,0x02190000, +0x20086001,0x13002500,0x00000040,0x24a41a28,0x1e00029c,0xffffffff,0x00000001,0x24a01a08, +0x00000294,0x00000000,0x0000000c,0x23341208,0x160000ec,0x00020002,0x0c600031,0x23003a0c, +0x000004a0,0x00000200,0x00000040,0x23380208,0x1e000334,0xffffffff,0x05400010,0x20001200, +0x020000e8,0x00000338,0x60004101,0x00181905,0x00000001,0x23300208,0x00000310,0x00000000, +0x60104101,0x00181305,0x00410002,0x44702288,0x22690330,0x0000032f,0x00400001,0x20f82288, +0x00400470,0x00000000,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00000001,0x40f61e88, +0x00000000,0x00700070,0x00010020,0x34000004,0x0e001400,0x00000030,0x01000010,0x20001260, +0x1e0000e8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x40f61e88, +0x00000000,0x00740074,0x01000010,0x20001260,0x1e0000ea,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000050,0x00000040,0x233c1208,0x160000e8,0x00010001,0x0000000c,0x23401208, +0x160000ec,0x00020002,0x04000010,0x20000200,0x0200033c,0x00000340,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000006,0x40f62288,0x1e0000f6,0x00080008,0x01000005,0x20002220, +0x1e00002a,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x40f41e88, +0x00000000,0x00010001,0x01000005,0x20002220,0x1e00002a,0x00040004,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000006,0x40f42288,0x1e0000f4,0x00020002,0x01000005,0x20002220, +0x1e00002a,0x00080008,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000006,0x40f42288, +0x1e0000f4,0x00040004,0x00000006,0x410e2288,0x1e00010e,0x00080008,0x00600041,0x23501248, +0x168d0220,0x00020002,0x00000001,0x413c2288,0x000000f4,0x00000000,0x00600001,0x21b82288, +0x000900f8,0x00000000,0x00000006,0x41202288,0x1e000120,0x00020002,0x00000005,0x210a1a48, +0x1e00029c,0xfffefffe,0x00400001,0x21a80208,0x00690270,0x00000000,0x00000006,0x410e2288, +0x1e00010e,0x00200020,0x00600040,0x22001240,0x168d0350,0x02400240,0x00000001,0x41a51e88, +0x00000000,0x00010001,0x60004101,0x00140e05,0x00600001,0x21f01648,0x00000000,0x7f7f7f7f, +0x00600001,0x21e01648,0x00000000,0x81818181,0x00000001,0x21081a48,0x00000294,0x00000000, +0x00000001,0x413d2288,0x000000f6,0x00000000,0x00000001,0x41a72288,0x000000fc,0x00000000, +0x00000006,0x410e2288,0x1e00010e,0x00800080,0x00000009,0x23441228,0x1e008200,0x00040004, +0x00000006,0x61d01288,0x0a008000,0x00000344,0x00000009,0x23481228,0x1e008600,0x00040004, +0x00000006,0x61d11288,0x0a008400,0x00000348,0x00000009,0x234c1228,0x1e008a00,0x00040004, +0x00000006,0x6364128c,0x0a008800,0x0000034c,0x00000001,0x41d22288,0x00000364,0x00000000, +0x00000009,0x23601228,0x1e008e00,0x00040004,0x00000006,0x6368128c,0x0a008c00,0x00000360, +0x00000001,0x41d32288,0x00000368,0x00000000,0x20005701,0x000a2807,0x00000040,0x22000204, +0x060000e4,0x10782000,0x20005701,0x000c2a07,0x20005701,0x00082607,0x20005701,0x000e2c07, +0x20004d01,0x00002e07,0x20086001,0x03002e00,0x00000001,0x25c41208,0x000000ea,0x00000000, +0x00000041,0x25c01228,0x160000e8,0x00040004,0x0d600031,0x23803a0c,0x000004c0,0x00000200, +0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x22001a68,0x0000038c,0x00000000, +0x00200001,0x24601a68,0x00450200,0x00000000,0x0c600033,0x00023014,0x000025c1,0x00000000, +0x0a600031,0x25e03a08,0x06000000,0x0219e000,0x20004d01,0x002f2f07,0x20004d01,0x00007f07, +0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e0002a0,0x00040004, +0x00000041,0x21021248,0x160002a0,0x00040004,0x00000041,0x21001248,0x160000e0,0x00040004, +0x00000040,0x22021240,0x16000100,0x00200020,0x00000040,0x22001240,0x16000102,0x02c002c0, +0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001, +0x05000010,0x20000a20,0x1e0002a0,0x00140014,0x00010020,0x34000004,0x0e001400,0xffffff70, +0x00800001,0x25a01e08,0x00000000,0x00000000,0x00000001,0x25b81248,0x000002e0,0x00000000, +0x00800001,0x23201e08,0x00000000,0x00000000,0x00800001,0x23e01e08,0x00000000,0x00000000, +0x00800001,0x23601e08,0x00000000,0x00000000,0x01000005,0x20001220,0x160005b8,0x00100010, +0x00800001,0x24201e08,0x00000000,0x00000000,0x00800001,0x24e01e08,0x00000000,0x00000000, +0x00800001,0x24601e08,0x00000000,0x00000000,0x00800001,0x25201e08,0x00000000,0x00000000, +0x00800001,0x25601e08,0x00000000,0x00000000,0x00800001,0x25e01e08,0x00000000,0x00000000, +0x00800001,0x24a01e08,0x00000000,0x00000000,0x00800001,0x23a01e08,0x00000000,0x00000000, +0x00000001,0x22a40208,0x00000330,0x00000000,0x00000001,0x25cc1248,0x000002f6,0x00000000, +0x00000001,0x25c01248,0x000002e6,0x00000000,0x00000001,0x25c61248,0x000002ec,0x00000000, +0x00000001,0x25c21248,0x000002e8,0x00000000,0x00000001,0x25c81248,0x000002ee,0x00000000, +0x00000001,0x25ca1248,0x000002f0,0x00000000,0x00000001,0x25c41248,0x000002ea,0x00000000, +0x00000001,0x25be1248,0x000002e4,0x00000000,0x00000001,0x25ba1248,0x000002e2,0x00000000, +0x20004b01,0x00161907,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28, +0x00000000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000090,0x01000005,0x20001220, +0x160005b8,0x00200020,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28, +0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000050,0x01000005,0x20001220, +0x160005b8,0x00400040,0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22a81e28, +0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22a81e28, +0x00000000,0x00030003,0x00000001,0x62ac0a88,0x000002a8,0x00000000,0x00000001,0x65f00a88, +0x000002a8,0x00000000,0x00000005,0x20e00008,0x06001000,0xffffffcf,0x00008006,0x30000200, +0x160000e0,0x00300030,0x00000001,0x210402e8,0x0000033c,0x00000000,0x00000001,0x214402e8, +0x00000330,0x00000000,0x00000001,0x210002e8,0x0000032c,0x00000000,0x00000001,0x212402e8, +0x00000338,0x00000000,0x00000040,0x20e01208,0x160005ba,0x00010001,0x00000001,0x42bd1e88, +0x00000000,0x00320032,0x00000001,0x42bf1e88,0x00000000,0x00730073,0x00000001,0x42bc1e88, +0x00000000,0x001e001e,0x00000041,0x21603ae8,0x3a000144,0x00000104,0x00000041,0x21203ae8, +0x3a000100,0x00000104,0x00000001,0x26241e28,0x00000000,0x00000000,0x05000002,0x22b80208, +0x160000e0,0xffffffff,0x00000001,0x46231e88,0x00000000,0x00780078,0x00000001,0x46221e88, +0x00000000,0x00460046,0x00000001,0x46211e88,0x00000000,0x00320032,0x09000038,0x21803ae8, +0x3a000160,0x00000124,0x09000038,0x21403ae8,0x3a000120,0x00000124,0x00000001,0x46201e88, +0x00000000,0x001e001e,0x00000001,0x42be1e88,0x00000000,0x005a005a,0x00000001,0x45d40248, +0x000002b8,0x00000000,0x00000046,0x21a03ae8,0x00000180,0x00000000,0x00000046,0x21843ae8, +0x00000140,0x00000000,0x00000001,0x22b43a08,0x000001a0,0x00000000,0x00000001,0x23443a08, +0x000001a0,0x00000000,0x00000001,0x23403a08,0x00000184,0x00000000,0x00000001,0x22b03a08, +0x00000184,0x00000000,0x00000040,0x22001240,0x16000624,0x02bc02bc,0x00000001,0x262822e8, +0x00008000,0x00000000,0x0d000038,0x20e00208,0x0600032c,0x00000064,0x02000010,0x20000200, +0x160000e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000110,0x0c000038,0x20e00208, +0x0600032c,0x00000064,0x00000040,0x21080a28,0x1e000624,0x00560056,0x00000041,0x21201248, +0x16000108,0x00040004,0x00000001,0x210002e8,0x000000e0,0x00000000,0x00000040,0x22001240, +0x16000120,0x03200320,0x00000041,0x21043ae8,0x3a000628,0x00000100,0x00000001,0xa0003a28, +0x00000104,0x00000000,0x00000040,0x22001240,0x16000624,0x06200620,0x00000001,0x214022e8, +0x00008000,0x00000000,0x00000040,0x21480a28,0x1e000624,0x00480048,0x00000041,0x21443ae8, +0x3a000140,0x00000100,0x00000041,0x21601248,0x16000148,0x00040004,0x00000040,0x22001240, +0x16000160,0x03200320,0x00000001,0xa0003a28,0x00000144,0x00000000,0x00000041,0x20e03ae8, +0x3a000140,0x00000100,0x00000001,0xa0203a28,0x000000e0,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000120,0x00000001,0x20e002e8,0x0000032c,0x00000000,0x00000040,0x21040a28, +0x1e000624,0x00560056,0x00000041,0x20e43ae8,0x3a000628,0x000000e0,0x00000041,0x21201248, +0x16000104,0x00040004,0x09000038,0x21003ae8,0x3e0000e4,0x42c80000,0x00000040,0x22001240, +0x16000120,0x03200320,0x00000001,0xa0003a28,0x00000100,0x00000000,0x00000040,0x22001240, +0x16000624,0x06200620,0x00000001,0x214022e8,0x00008000,0x00000000,0x00000041,0x21443ae8, +0x3a000140,0x000000e0,0x00000040,0x21640a28,0x1e000624,0x00480048,0x09000038,0x21603ae8, +0x3e000144,0x42c80000,0x00000041,0x21801248,0x16000164,0x00040004,0x00000040,0x22001240, +0x16000180,0x03200320,0x00000001,0xa0003a28,0x00000160,0x00000000,0x00000041,0x21a03ae8, +0x3a000140,0x000000e0,0x09000038,0x21c03ae8,0x3e0001a0,0x42c80000,0x00000001,0xa0203a28, +0x000001c0,0x00000000,0x00000040,0x26240a28,0x1e000624,0x00010001,0x05000010,0x20000a20, +0x1e000624,0x00040004,0x00010020,0x34000004,0x0e001400,0xfffffd50,0x00000001,0x26241e28, +0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e000624,0x00100010,0x00000040,0x22001240, +0x160000e0,0x02f802f8,0x00000001,0x262c2ae8,0x00008000,0x00000000,0x0d000038,0x21000208, +0x06000328,0x00000064,0x02000010,0x20000200,0x16000100,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000130,0x0c000038,0x20e00208,0x06000328,0x00000064,0x00000040,0x21080a28, +0x1e000624,0x003e003e,0x00000041,0x21201248,0x16000108,0x00040004,0x00000001,0x210002e8, +0x000000e0,0x00000000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000041,0x21043ae8, +0x3a00062c,0x00000100,0x00000001,0xa0003a28,0x00000104,0x00000000,0x00000040,0x21400a28, +0x1e000624,0x00380038,0x00000040,0x22001240,0x16000140,0x02c002c0,0x00000001,0x21602ae8, +0x00008000,0x00000000,0x00000040,0x21840a28,0x1e000624,0x002a002a,0x00000041,0x21803ae8, +0x3a000160,0x00000100,0x00000041,0x21a01248,0x16000184,0x00040004,0x00000040,0x22021240, +0x160001a0,0x03200320,0x00000001,0xa2003a28,0x00000180,0x00000000,0x00000001,0x20e02ae8, +0x00008008,0x00000000,0x00000041,0x21c03ae8,0x3a0000e0,0x00000100,0x00000001,0xa2283a28, +0x000001c0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000140,0x00000001,0x20e002e8, +0x00000328,0x00000000,0x00000040,0x21040a28,0x1e000624,0x003e003e,0x00000041,0x20e43ae8, +0x3a00062c,0x000000e0,0x00000041,0x21201248,0x16000104,0x00040004,0x09000038,0x21003ae8, +0x3e0000e4,0x42c80000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000001,0xa0003a28, +0x00000100,0x00000000,0x00000040,0x21400a28,0x1e000624,0x00380038,0x00000040,0x22001240, +0x16000140,0x02c002c0,0x00000001,0x21602ae8,0x00008000,0x00000000,0x00000041,0x21803ae8, +0x3a000160,0x000000e0,0x00000040,0x21a40a28,0x1e000624,0x002a002a,0x09000038,0x21a03ae8, +0x3e000180,0x42c80000,0x00000041,0x21c01248,0x160001a4,0x00040004,0x00000040,0x22021240, +0x160001c0,0x03200320,0x00000001,0xa2003a28,0x000001a0,0x00000000,0x00000001,0x20e42ae8, +0x00008008,0x00000000,0x00000041,0x21203ae8,0x3a0000e4,0x000000e0,0x09000038,0x21003ae8, +0x3e000120,0x42c80000,0x00000001,0xa2283a28,0x00000100,0x00000000,0x00000040,0x26240a28, +0x1e000624,0x00010001,0x05000010,0x20000a20,0x1e000624,0x00080008,0x00010020,0x34000004, +0x0e001400,0xfffffd00,0x00000001,0x23480208,0x00000324,0x00000000,0x00000040,0x20e00208, +0x02000348,0x000002b4,0x04000010,0x20000200,0x020000e0,0x00000328,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x26301608,0x00000000,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000070,0x02000010,0x20002260,0x1e0005f0,0x00010001,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x26341608,0x00000000,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000020,0x00000040,0x20e00208,0x02000348,0x000002b4,0x00000040,0x26340208, +0x020000e0,0x00004328,0x00000001,0x26300208,0x00000634,0x00000000,0x00000041,0x20e01228, +0x160005ba,0x00190019,0x00000001,0x214002e8,0x00000338,0x00000000,0x00000001,0x214402e8, +0x0000033c,0x00000000,0x00000041,0x21040208,0x120002b0,0x000005d4,0x00000001,0x24fc1608, +0x00000000,0x00000000,0x00000001,0x239c0208,0x00000348,0x00000000,0x00000001,0x23980208, +0x00000630,0x00000000,0x00000040,0x21000a08,0x1e0000e0,0x012c012c,0x09000038,0x20e03ae8, +0x3a000140,0x00000144,0x00000001,0x25000208,0x000004fc,0x00000000,0x0c000038,0x21200208, +0x02000104,0x00000100,0x00000001,0x23600208,0x000004fc,0x00000000,0x00000001,0x238c0208, +0x000004fc,0x00000000,0x00000001,0x41603a4c,0x000000e0,0x00000000,0x00000041,0x24e40208, +0x16000120,0x00190019,0x00000041,0x23900208,0x16000120,0x012c012c,0x00000001,0x25da1248, +0x00000160,0x00000000,0x00000001,0x23880208,0x000004e4,0x00000000,0x01000005,0x20001220, +0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x25da1248, +0x160005da,0x00010001,0x02000010,0x20000200,0x160002a4,0x00000000,0x0000000c,0x26381228, +0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x25a00a08, +0x00000638,0x00000000,0x00000041,0x25240208,0x020005a0,0x000002b0,0x00000040,0x20e01208, +0x1e0005cc,0xff9cff9c,0x02000010,0x20000200,0x160002a4,0x00000000,0x00000041,0x21000208, +0x020000e0,0x00000524,0x0c000038,0x251c0208,0x06000100,0x00000064,0x00010020,0x34000004, +0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e000638,0x00000000,0x00000001,0x26241e28, +0x00000000,0x00000000,0x00000001,0x25201608,0x00000000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000070,0x00000040,0x20e00a28,0x1e000624,0x00820082,0x00000041,0x21001248, +0x160000e0,0x00040004,0x00000040,0x22001240,0x16000100,0x03200320,0x00000001,0xa0001608, +0x00000000,0x00000000,0x00000040,0x26240a28,0x1e000624,0x00010001,0x05000010,0x20000a20, +0x0a000624,0x00000638,0x00010020,0x34000004,0x0e001400,0xffffff90,0x02000010,0x20002260, +0x1e0002ac,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030,0x00000041,0x40e00a4c, +0x1e000638,0x00020002,0x00000001,0x25da1248,0x000000e0,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000030,0x03000010,0x20001260,0x1e0005da,0x001e001e,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x25da1648,0x00000000,0x003c003c,0x06000010,0x20000200, +0x160002b8,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000020,0x01000005,0x20001220, +0x160005da,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000090,0x00000009,0x40e0024c, +0x160002b8,0x00010001,0x00000001,0x25da1248,0x000000e0,0x00000000,0x04000010,0x20001260, +0x1e0005da,0x000c000c,0x00010020,0x34000004,0x0e001400,0x00000050,0x00000001,0x20e01608, +0x00000000,0x000c000c,0x00000001,0x20e41208,0x000005da,0x00000000,0x0c000038,0x21000228, +0x020000e0,0x000000e4,0x00000041,0x41200a4c,0x12000100,0x000005da,0x00000001,0x25da1248, +0x00000120,0x00000000,0x00000041,0x20e01228,0x120005be,0x000005c0,0x00000001,0x21a802e8, +0x0000033c,0x00000000,0x00000001,0x218402e8,0x00000338,0x00000000,0x00000001,0x21a402e8, +0x0000032c,0x00000000,0x00000001,0x24ec1608,0x00000000,0x00000000,0x00000001,0x23800208, +0x000002c4,0x00000000,0x00000001,0x25dc1248,0x000002e4,0x00000000,0x00000041,0x21000a28, +0x1e0000e0,0x00030003,0x02000038,0x20e03ee8,0x00000000,0x41200000,0x00000041,0x21c03ae8, +0x3a0001a4,0x000001a8,0x00000001,0x25e01248,0x000002f4,0x00000000,0x00000001,0x25de1248, +0x000002e6,0x00000000,0x00000001,0x24f40208,0x000004ec,0x00000000,0x0000000c,0x21200a28, +0x1e000100,0x00010001,0x00000001,0x24f00208,0x000004ec,0x00000000,0x00000001,0x24f80208, +0x000004ec,0x00000000,0x00000001,0x21400ae8,0x00000120,0x00000000,0x00000040,0x21603ae8, +0x3a000140,0x00000140,0x09000038,0x21803ae8,0x3e000160,0x40400000,0x00000041,0x21a03ae8, +0x3a000180,0x00000184,0x00000001,0x21803ee8,0x00000000,0x41200000,0x09000038,0x21e03ae8, +0x3a0001a0,0x000001c0,0x02000038,0x22003ae8,0x000001e0,0x00000000,0x09000038,0x21003ae8, +0x3a000200,0x000000e0,0x00000040,0x21203ae8,0x3e000100,0x80000000,0x00000041,0x21403ae8, +0x3e000120,0x3f0f5c28,0x09000038,0x21603ae8,0x3e000140,0x3fe00000,0x00000040,0x22203ae8, +0x3e000160,0x3f9851ec,0x0a000038,0x22403ae8,0x3a000180,0x00000220,0x00000041,0x22603ae8, +0x3e000240,0x3f555555,0x00000040,0x22803ae8,0x3e000260,0x3f000000,0x00000001,0x21a03a28, +0x00000280,0x00000000,0x00000001,0x21c00ae8,0x000001a0,0x00000000,0x00000041,0x21e03ae8, +0x3e0001c0,0x40a00000,0x00000001,0x20e03a28,0x000001e0,0x00000000,0x00000040,0x21000a28, +0x1e0000e0,0xffecffec,0x05000002,0x21200a28,0x1e000100,0x00c800c8,0x04000002,0x263c0a28, +0x1e000120,0x00010001,0x06000010,0x20000a20,0x1e00063c,0x00040004,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000040,0x26400a28,0x1e00063c,0xfffcfffc,0x00000020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x26400a28,0x0000063c,0x00000000,0x00000001,0x20e01208, +0x000005ba,0x00000000,0x00000041,0x21680208,0x1600033c,0x00140014,0x02000010,0x20002260, +0x1e0002ac,0x00030003,0x0c000038,0x21000228,0x060000e0,0x0000001e,0x0c000038,0x21800208, +0x02000338,0x00000168,0x00000040,0x41200a68,0x1e000100,0xffffffff,0x00000041,0x21a00208, +0x16000180,0x000c000c,0x05000002,0x21401a28,0x1e000120,0x00140014,0x04000002,0x41600a68, +0x1e000140,0x00000000,0x00000001,0x21641a08,0x00000160,0x00000000,0x00000040,0x21c00208, +0x02000164,0x000001a0,0x00000001,0x41600268,0x000001c0,0x00000000,0x00000040,0x21e00a28, +0x1a000640,0x00004160,0x05000002,0x22000a28,0x1e0001e0,0x00c800c8,0x04000002,0x26400a28, +0x1e000200,0x00010001,0x00000040,0x263c0a28,0x1e000640,0x00140014,0x00010020,0x34000004, +0x0e001400,0x00000050,0x00000040,0x20e01228,0x1e0005ca,0xffe0ffe0,0x04000002,0x263c1228, +0x0a0005ca,0x0000063c,0x04000010,0x20000a20,0x0a000640,0x000000e0,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000040,0x26401228,0x1e0005ca,0xffe0ffe0,0x04000002,0x26401228, +0x0a0005c6,0x00000640,0x00000005,0x21800208,0x06000024,0xff000000,0x00000005,0x21400208, +0x0600002c,0xff000000,0x04000002,0x263c1228,0x0a0005c6,0x0000063c,0x00000005,0x21000a28, +0x0e00002c,0x00ff0000,0x00000001,0x23741608,0x00000000,0x00000000,0x00000001,0x45f31ea8, +0x00000000,0xffffffff,0x05000002,0x26401228,0x0a0005c8,0x00000640,0x0000000c,0x66440288, +0x16000180,0x00180018,0x00000001,0x45f61e88,0x00000000,0x00000000,0x0000000c,0x6160028c, +0x16000140,0x00180018,0x05000002,0x65e91288,0x0a0005c8,0x0000063c,0x0000000c,0x61200a8c, +0x1e000100,0x00100010,0x00000005,0x65fc0a88,0x1e00002c,0x00ff00ff,0x00000001,0x60e00a8c, +0x00000640,0x00000000,0x00000040,0x21a00a28,0x1e000640,0x00060006,0x06000010,0x20002260, +0x1e000644,0x00010001,0x00000001,0x24d41e28,0x00000000,0xffffffff,0x00600001,0x249c1e28, +0x00000000,0xffffffff,0x00200001,0x24cc1e28,0x00000000,0xffffffff,0x00000001,0x24e81608, +0x00000000,0x00010001,0x00000001,0x45eb2288,0x000000e0,0x00000000,0x05000002,0x26400a28, +0x1e0001a0,0x00f000f0,0x00000005,0x20e00a28,0x0e00002c,0x0000ff00,0x00000001,0x25d81648, +0x00000000,0x00000000,0x00400001,0x24bc1e28,0x00000000,0xffffffff,0x00000001,0x237c0208, +0x00000374,0x00000000,0x00000001,0x23780208,0x00000374,0x00000000,0x00000001,0x45e82aa8, +0x000005f3,0x00000000,0x00000001,0x45f82aa8,0x000005f3,0x00000000,0x00000001,0x45f52288, +0x00000644,0x00000000,0x00000001,0x45f22288,0x000005f6,0x00000000,0x00000001,0x45ff2288, +0x00000160,0x00000000,0x00000001,0x45ed2288,0x000005e9,0x00000000,0x00000001,0x45fe2288, +0x00000120,0x00000000,0x00000001,0x45ef2288,0x000005eb,0x00000000,0x00000040,0x263c0a28, +0x1e000640,0x00140014,0x0000000c,0x65fd0a88,0x1e0000e0,0x00080008,0x00010020,0x34000004, +0x0e001400,0x00000330,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000041,0x20e00208, +0x220002b0,0x000005fc,0x00000001,0x21602228,0x000005fd,0x00000000,0x00000041,0x21400208, +0x220002b0,0x000005fd,0x0c000038,0x21040a28,0x0e000100,0x00000040,0x0000000c,0x24d80208, +0x160000e0,0x00060006,0x0c000038,0x20e00a28,0x0a000100,0x00000160,0x0000000c,0x24dc0208, +0x16000140,0x00060006,0x00000040,0x26480a28,0x1e000104,0xfff4fff4,0x00000040,0x26400a28, +0x0a000640,0x00004648,0x00000040,0x263c0a28,0x0a00063c,0x00004648,0x00000040,0x26480a28, +0x1e0000e0,0xfff4fff4,0x00000001,0x61200a8c,0x00000640,0x00000000,0x00000001,0x65ed0a88, +0x0000063c,0x00000000,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00000001,0x45ef2288, +0x00000120,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e00a28, +0x1e000648,0x00020002,0x00000040,0x26480a28,0x1e0000e0,0x000c000c,0x06000010,0x20002260, +0x1e000644,0x00020002,0x00000040,0x65f90a88,0x0a000648,0x0000063c,0x00010020,0x34000004, +0x0e001400,0x000001a0,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000001,0x21042228, +0x000005fe,0x00000000,0x00000041,0x20e00208,0x220002b0,0x000005fe,0x0c000038,0x21200a28, +0x0a000100,0x00000104,0x0000000c,0x24e00208,0x160000e0,0x00060006,0x00000040,0x26480a28, +0x1e000120,0xfff4fff4,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00010020,0x34000004, +0x0e001400,0x00000020,0x0000000c,0x20e00a28,0x1e000648,0x00020002,0x00000040,0x26480a28, +0x1e0000e0,0x000c000c,0x00000040,0x60e00a8c,0x0a000648,0x0000063c,0x06000010,0x20002260, +0x1e000644,0x00030003,0x00000001,0x45fa2288,0x000000e0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x000000c0,0x00000041,0x21002228,0x1e0005fc,0x000c000c,0x00000001,0x21042228, +0x000005ff,0x00000000,0x00000041,0x20e00208,0x220002b0,0x000005ff,0x0c000038,0x21200a28, +0x0a000100,0x00000104,0x0000000c,0x25040208,0x160000e0,0x00060006,0x00000040,0x26480a28, +0x1e000120,0xfff4fff4,0x06000010,0x20000a20,0x1e000648,0x000c000c,0x00010020,0x34000004, +0x0e001400,0x00000020,0x0000000c,0x20e00a28,0x1e000648,0x00020002,0x00000040,0x26480a28, +0x1e0000e0,0x000c000c,0x00000040,0x60e00a8c,0x0a000648,0x0000063c,0x00000001,0x45fb2288, +0x000000e0,0x00000000,0x00000001,0x60e00a8c,0x00000640,0x00000000,0x00000001,0x65e90a88, +0x0000063c,0x00000000,0x00000001,0x45eb2288,0x000000e0,0x00000000,0x00000001,0x250c1608, +0x00000000,0x00000000,0x00000001,0x264c1e28,0x00000000,0x00000000,0x00000001,0x25140208, +0x0000050c,0x00000000,0x00000001,0x25100208,0x0000050c,0x00000000,0x00000001,0x23680208, +0x0000050c,0x00000000,0x00000001,0x23640208,0x0000050c,0x00000000,0x00000001,0x236c0208, +0x0000050c,0x00000000,0x00000001,0x23700208,0x0000050c,0x00000000,0x00000009,0x20e00a28, +0x1e00064c,0x00050005,0x00000009,0x20e40a28,0x1e00064c,0x00070007,0x00000041,0x21001248, +0x160000e0,0x00040004,0x00000040,0x22001240,0x16000100,0x03200320,0x00600001,0x21200208, +0x00208000,0x00000000,0x00600001,0x21400208,0x00208020,0x00000000,0x00600001,0x21600208, +0x00208040,0x00000000,0x00600001,0x21800208,0x00208060,0x00000000,0x00000040,0x264c0a28, +0x1e00064c,0x00010001,0x00000008,0x21a80a08,0x1e0000e4,0x00040004,0x00000040,0x22000204, +0x060000e8,0x020a0400,0x05000010,0x20000a20,0x1e00064c,0x00060006,0x0a800033,0x00009054, +0x000021a4,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff20,0x0000000c,0x20e01228, +0x16000020,0x00020002,0x0000000c,0x21241228,0x16000022,0x00020002,0x00800001,0x26601e08, +0x00000000,0x00000000,0x00800001,0x26a01e08,0x00000000,0x00000000,0x00800001,0x27201e08, +0x00000000,0x00000000,0x00000040,0x21000a28,0x1e0000e0,0x000f000f,0x00000040,0x21400a28, +0x1e000124,0x000f000f,0x00800001,0x26e01e08,0x00000000,0x00000000,0x00000001,0x26581e28, +0x00000000,0x00000000,0x00000005,0x21200a08,0x1e000100,0xfff0fff0,0x00000005,0x21600a08, +0x1e000140,0xfff0fff0,0x0000000c,0x21640208,0x16000120,0x00020002,0x0600000c,0x26540208, +0x16000160,0x00020002,0x00000009,0x26500208,0x16000164,0x00010001,0x00010020,0x34000004, +0x0e001400,0x000000e8,0x06000010,0x20000200,0x16000650,0x00000000,0x00000001,0x265c1e28, +0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000088,0x20004d01,0x00000807, +0x00000001,0x2100020c,0x0000065c,0x00000000,0x00000040,0x265c0a28,0x1e00065c,0x00100010, +0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x2104020c,0x00000658,0x00000000, +0x00000001,0x2108060c,0x00000000,0x0007001f,0x05000010,0x20000200,0x0200065c,0x00000650, +0x0c600033,0x00033014,0x00002108,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff78, +0x00000040,0x26580a28,0x1e000658,0x00100010,0x05000010,0x20000200,0x02000658,0x00000654, +0x00010020,0x34000004,0x0e001400,0xffffff18,0x20004d01,0x00007f07,0x07000031,0x20003a00, +0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e0002a0,0x00040004, +0x00000041,0x21021248,0x160002a0,0x00040004,0x00000041,0x21001248,0x160000e0,0x00040004, +0x00000040,0x22021240,0x16000100,0x00200020,0x00000040,0x22001240,0x16000102,0x02c002c0, +0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001, +0x05000010,0x20000a20,0x1e0002a0,0x00140014,0x00010020,0x34000004,0x0e001400,0xffffff70, +0x00000001,0x22a41e28,0x00000000,0x00000000,0x00000009,0x20e40a28,0x1e0002a4,0x00070007, +0x00000040,0x22000204,0x060000e8,0x02480400,0x00000009,0x20e00a28,0x1e0002a4,0x00050005, +0x00000008,0x21080a08,0x1e0000e4,0x00040004,0x00000041,0x21a01248,0x160000e0,0x00040004, +0x0a800031,0x21203a6c,0x00000100,0x00000200,0x00000040,0x22001240,0x160001a0,0x03200320, +0x00600001,0xa0000208,0x008d0120,0x00000000,0x00600001,0xa0200208,0x008d0140,0x00000000, +0x00600001,0xa0400208,0x008d0160,0x00000000,0x00600001,0xa0600208,0x008d0180,0x00000000, +0x00000040,0x22a40a28,0x1e0002a4,0x00010001,0x05000010,0x20000a20,0x1e0002a4,0x00060006, +0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000001,0x25b81248,0x000002e0,0x00000000, +0x00000001,0x22a80208,0x00000330,0x00000000,0x00000001,0x25c81248,0x000002ee,0x00000000, +0x00000001,0x25cc1248,0x000002f6,0x00000000,0x00000001,0x25c61248,0x000002ec,0x00000000, +0x00000001,0x25c01248,0x000002e6,0x00000000,0x00000001,0x25c41248,0x000002ea,0x00000000, +0x01000005,0x20001220,0x160005b8,0x00100010,0x00000001,0x25be1248,0x000002e4,0x00000000, +0x00000001,0x25ba1248,0x000002e2,0x00000000,0x00000001,0x25c21248,0x000002e8,0x00000000, +0x00000001,0x25ca1248,0x000002f0,0x00000000,0x20004b01,0x00161907,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000090,0x01000005,0x20001220,0x160005b8,0x00200020,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00010001,0x00000020,0x34000004, +0x0e001400,0x00000050,0x01000005,0x20001220,0x160005b8,0x00400040,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000001,0x22ac1e28,0x00000000,0x00020002,0x00000020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x22ac1e28,0x00000000,0x00030003,0x00000001,0x62b00a88, +0x000002ac,0x00000000,0x00000001,0x65f00a88,0x000002ac,0x00000000,0x00000005,0x20e00008, +0x06001000,0xffffffcf,0x00008006,0x30000200,0x160000e0,0x00300030,0x00000001,0x212402e8, +0x00000338,0x00000000,0x00000001,0x210402e8,0x0000033c,0x00000000,0x00000001,0x214402e8, +0x00000330,0x00000000,0x00000001,0x210002e8,0x0000032c,0x00000000,0x09000038,0x20e03ae8, +0x3a000124,0x00000104,0x00000041,0x21603ae8,0x3a000144,0x00000104,0x00000041,0x21203ae8, +0x3a000100,0x00000104,0x09000038,0x21803ae8,0x3a000160,0x00000124,0x09000038,0x21403ae8, +0x3a000120,0x00000124,0x00000001,0x41c03a4c,0x000000e0,0x00000000,0x00000001,0x25da1248, +0x000001c0,0x00000000,0x00000046,0x21a03ae8,0x00000180,0x00000000,0x00000046,0x21843ae8, +0x00000140,0x00000000,0x01000005,0x20001220,0x160005da,0x00010001,0x00000001,0x23443a08, +0x000001a0,0x00000000,0x00000001,0x23403a08,0x00000184,0x00000000,0x00000001,0x22b43a08, +0x00000184,0x00000000,0x00000001,0x24e43a08,0x00000184,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000040,0x25da1248,0x160005da,0x00010001,0x02000010,0x20000200, +0x160002a8,0x00000000,0x0000000c,0x22b81228,0x160005da,0x00010001,0x00010020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x25a00a08,0x000002b8,0x00000000,0x00000041,0x25240208, +0x020005a0,0x000002b4,0x00000040,0x20e01208,0x1e0005cc,0xff9cff9c,0x02000010,0x20000200, +0x160002a8,0x00000000,0x00000041,0x21000208,0x020000e0,0x00000524,0x0c000038,0x251c0208, +0x06000100,0x00000064,0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20, +0x1e0002b8,0x00000000,0x00000001,0x25201608,0x00000000,0x00000000,0x00000001,0x22a01e28, +0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e00a28, +0x1e0002a0,0x00820082,0x00000041,0x21001248,0x160000e0,0x00040004,0x00000040,0x22001240, +0x16000100,0x03200320,0x00000001,0xa0001608,0x00000000,0x00000000,0x00000040,0x22a00a28, +0x1e0002a0,0x00010001,0x05000010,0x20000a20,0x0a0002a0,0x000002b8,0x00010020,0x34000004, +0x0e001400,0xffffff90,0x02000010,0x20002260,0x1e0002b0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000030,0x00000041,0x40e00a4c,0x1e0002b8,0x00020002,0x00000001,0x25da1248, +0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030,0x03000010,0x20001260, +0x1e0005da,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x25da1648, +0x00000000,0x003c003c,0x00000040,0x20e01208,0x160005ba,0x00010001,0x01000010,0x20002260, +0x1e0002b0,0x00030003,0x05000002,0x45d40248,0x160000e0,0xffffffff,0x00010020,0x34000004, +0x0e001400,0x000002d0,0x00000041,0x20e01228,0x120005be,0x000005c0,0x00000001,0x21a802e8, +0x0000033c,0x00000000,0x00000001,0x218402e8,0x00000338,0x00000000,0x00000001,0x21a402e8, +0x0000032c,0x00000000,0x00000041,0x21000a28,0x1e0000e0,0x00030003,0x02000038,0x20e03ee8, +0x00000000,0x41200000,0x00000041,0x21c03ae8,0x3a0001a4,0x000001a8,0x0000000c,0x21200a28, +0x1e000100,0x00010001,0x00000001,0x21400ae8,0x00000120,0x00000000,0x00000040,0x21603ae8, +0x3a000140,0x00000140,0x09000038,0x21803ae8,0x3e000160,0x40400000,0x00000041,0x21a03ae8, +0x3a000180,0x00000184,0x00000001,0x21803ee8,0x00000000,0x41200000,0x09000038,0x21e03ae8, +0x3a0001a0,0x000001c0,0x02000038,0x22003ae8,0x000001e0,0x00000000,0x09000038,0x21003ae8, +0x3a000200,0x000000e0,0x00000040,0x21203ae8,0x3e000100,0x80000000,0x00000041,0x21403ae8, +0x3e000120,0x3f0f5c28,0x09000038,0x21603ae8,0x3e000140,0x3fe00000,0x00000040,0x22203ae8, +0x3e000160,0x3f9851ec,0x0a000038,0x22403ae8,0x3a000180,0x00000220,0x00000041,0x22603ae8, +0x3e000240,0x3f555555,0x00000040,0x22803ae8,0x3e000260,0x3f000000,0x00000001,0x21a03a28, +0x00000280,0x00000000,0x00000001,0x21c00ae8,0x000001a0,0x00000000,0x00000041,0x21e03ae8, +0x3e0001c0,0x40a00000,0x00000001,0x20e03a28,0x000001e0,0x00000000,0x00000040,0x21000a28, +0x1e0000e0,0xffecffec,0x05000002,0x21200a28,0x1e000100,0x00c800c8,0x04000002,0x22bc0a28, +0x1e000120,0x00010001,0x06000010,0x20000a20,0x1e0002bc,0x00040004,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000040,0x26200a28,0x1e0002bc,0xfffcfffc,0x00000020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x26200a28,0x000002bc,0x00000000,0x00000001,0x20e01208, +0x000005ba,0x00000000,0x0c000038,0x21000228,0x060000e0,0x0000001e,0x00000040,0x41200a68, +0x1e000100,0xffffffff,0x05000002,0x21401a28,0x1e000120,0x00140014,0x04000002,0x41600a68, +0x1e000140,0x00000000,0x00000040,0x21800a28,0x1a000620,0x00004160,0x05000002,0x21a00a28, +0x1e000180,0x00c800c8,0x04000002,0x26200a28,0x1e0001a0,0x00010001,0x00000040,0x22bc0a28, +0x1e000620,0x00140014,0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001260, +0x1e0005ca,0x00040004,0x00000001,0x22bc1228,0x000005ca,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000020,0x00000040,0x26201228,0x1e0005ca,0xfffcfffc,0x00000020,0x34000004, +0x0e001400,0x00000010,0x00000001,0x26201228,0x000005ca,0x00000000,0x04000002,0x26201228, +0x0a0005c6,0x00000620,0x04000002,0x22bc1228,0x0a0005c6,0x000002bc,0x00000001,0x462b1e88, +0x00000000,0x00780078,0x00000001,0x462a1e88,0x00000000,0x00460046,0x00000001,0x46271e88, +0x00000000,0x00730073,0x00000001,0x46291e88,0x00000000,0x00320032,0x00000001,0x46261e88, +0x00000000,0x005a005a,0x05000002,0x60e0128c,0x0a0005c8,0x00000620,0x05000002,0x65ed1288, +0x0a0005c8,0x000002bc,0x00000001,0x46251e88,0x00000000,0x00320032,0x00000001,0x46241e88, +0x00000000,0x001e001e,0x00000001,0x46281e88,0x00000000,0x001e001e,0x00000001,0x22a01e28, +0x00000000,0x00000000,0x00000001,0x45ef2288,0x000000e0,0x00000000,0x00000001,0x45e92288, +0x000005ed,0x00000000,0x00000001,0x45eb2288,0x000005ef,0x00000000,0x00000040,0x22001240, +0x160002a0,0x06240624,0x00000001,0x262c22e8,0x00008000,0x00000000,0x0d000038,0x20e00208, +0x0600032c,0x00000064,0x02000010,0x20000200,0x160000e0,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000110,0x0c000038,0x20e00208,0x0600032c,0x00000064,0x00000040,0x21080a28, +0x1e0002a0,0x00560056,0x00000041,0x21201248,0x16000108,0x00040004,0x00000001,0x210002e8, +0x000000e0,0x00000000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000041,0x21043ae8, +0x3a00062c,0x00000100,0x00000001,0xa0003a28,0x00000104,0x00000000,0x00000040,0x22001240, +0x160002a0,0x06280628,0x00000001,0x214022e8,0x00008000,0x00000000,0x00000040,0x21480a28, +0x1e0002a0,0x00480048,0x00000041,0x21443ae8,0x3a000140,0x00000100,0x00000041,0x21601248, +0x16000148,0x00040004,0x00000040,0x22001240,0x16000160,0x03200320,0x00000001,0xa0003a28, +0x00000144,0x00000000,0x00000041,0x20e03ae8,0x3a000140,0x00000100,0x00000001,0xa0203a28, +0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000120,0x00000001,0x20e002e8, +0x0000032c,0x00000000,0x00000040,0x21040a28,0x1e0002a0,0x00560056,0x00000041,0x20e43ae8, +0x3a00062c,0x000000e0,0x00000041,0x21201248,0x16000104,0x00040004,0x09000038,0x21003ae8, +0x3e0000e4,0x42c80000,0x00000040,0x22001240,0x16000120,0x03200320,0x00000001,0xa0003a28, +0x00000100,0x00000000,0x00000040,0x22001240,0x160002a0,0x06280628,0x00000001,0x214022e8, +0x00008000,0x00000000,0x00000041,0x21443ae8,0x3a000140,0x000000e0,0x00000040,0x21640a28, +0x1e0002a0,0x00480048,0x09000038,0x21603ae8,0x3e000144,0x42c80000,0x00000041,0x21801248, +0x16000164,0x00040004,0x00000040,0x22001240,0x16000180,0x03200320,0x00000001,0xa0003a28, +0x00000160,0x00000000,0x00000041,0x21a03ae8,0x3a000140,0x000000e0,0x09000038,0x21c03ae8, +0x3e0001a0,0x42c80000,0x00000001,0xa0203a28,0x000001c0,0x00000000,0x00000040,0x22a00a28, +0x1e0002a0,0x00010001,0x05000010,0x20000a20,0x1e0002a0,0x00040004,0x00010020,0x34000004, +0x0e001400,0xfffffd50,0x00000001,0x22a01e28,0x00000000,0x00000000,0x00000040,0x20e00a28, +0x1e0002a0,0x00100010,0x00000040,0x22001240,0x160000e0,0x02f802f8,0x00000001,0x26302ae8, +0x00008000,0x00000000,0x0d000038,0x21000208,0x06000328,0x00000064,0x02000010,0x20000200, +0x16000100,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000130,0x0c000038,0x20e00208, +0x06000328,0x00000064,0x00000040,0x21080a28,0x1e0002a0,0x003e003e,0x00000041,0x21201248, +0x16000108,0x00040004,0x00000001,0x210002e8,0x000000e0,0x00000000,0x00000040,0x22001240, +0x16000120,0x03200320,0x00000041,0x21043ae8,0x3a000630,0x00000100,0x00000001,0xa0003a28, +0x00000104,0x00000000,0x00000040,0x21400a28,0x1e0002a0,0x00380038,0x00000040,0x22001240, +0x16000140,0x02c002c0,0x00000001,0x21602ae8,0x00008000,0x00000000,0x00000040,0x21840a28, +0x1e0002a0,0x002a002a,0x00000041,0x21803ae8,0x3a000160,0x00000100,0x00000041,0x21a01248, +0x16000184,0x00040004,0x00000040,0x22021240,0x160001a0,0x03200320,0x00000001,0xa2003a28, +0x00000180,0x00000000,0x00000001,0x20e02ae8,0x00008008,0x00000000,0x00000041,0x21c03ae8, +0x3a0000e0,0x00000100,0x00000001,0xa2283a28,0x000001c0,0x00000000,0x00000020,0x34000004, +0x0e001400,0x00000140,0x00000001,0x20e002e8,0x00000328,0x00000000,0x00000040,0x21040a28, +0x1e0002a0,0x003e003e,0x00000041,0x20e43ae8,0x3a000630,0x000000e0,0x00000041,0x21201248, +0x16000104,0x00040004,0x09000038,0x21003ae8,0x3e0000e4,0x42c80000,0x00000040,0x22001240, +0x16000120,0x03200320,0x00000001,0xa0003a28,0x00000100,0x00000000,0x00000040,0x21400a28, +0x1e0002a0,0x00380038,0x00000040,0x22001240,0x16000140,0x02c002c0,0x00000001,0x21602ae8, +0x00008000,0x00000000,0x00000041,0x21803ae8,0x3a000160,0x000000e0,0x00000040,0x21a40a28, +0x1e0002a0,0x002a002a,0x09000038,0x21a03ae8,0x3e000180,0x42c80000,0x00000041,0x21c01248, +0x160001a4,0x00040004,0x00000040,0x22021240,0x160001c0,0x03200320,0x00000001,0xa2003a28, +0x000001a0,0x00000000,0x00000001,0x20e42ae8,0x00008008,0x00000000,0x00000041,0x21203ae8, +0x3a0000e4,0x000000e0,0x09000038,0x21003ae8,0x3e000120,0x42c80000,0x00000001,0xa2283a28, +0x00000100,0x00000000,0x00000040,0x22a00a28,0x1e0002a0,0x00010001,0x05000010,0x20000a20, +0x1e0002a0,0x00080008,0x00010020,0x34000004,0x0e001400,0xfffffd00,0x00000001,0x26341e28, +0x00000000,0x00000000,0x00000009,0x20e00a28,0x1e000634,0x00050005,0x00000009,0x20e40a28, +0x1e000634,0x00070007,0x00000041,0x21001248,0x160000e0,0x00040004,0x00000040,0x22001240, +0x16000100,0x03200320,0x00600001,0x21200208,0x00208000,0x00000000,0x00600001,0x21400208, +0x00208020,0x00000000,0x00600001,0x21600208,0x00208040,0x00000000,0x00600001,0x21800208, +0x00208060,0x00000000,0x00000040,0x26340a28,0x1e000634,0x00010001,0x00000008,0x21a80a08, +0x1e0000e4,0x00040004,0x00000040,0x22000204,0x060000e8,0x020a0400,0x05000010,0x20000a20, +0x1e000634,0x00060006,0x0a800033,0x00009054,0x000021a4,0x00000000,0x00010020,0x34000004, +0x0e001400,0xffffff20,0x0000000c,0x20e01228,0x16000020,0x00020002,0x0000000c,0x21241228, +0x16000022,0x00020002,0x00800001,0x26801e08,0x00000000,0x00000000,0x00800001,0x26c01e08, +0x00000000,0x00000000,0x00800001,0x27001e08,0x00000000,0x00000000,0x00000040,0x21000a28, +0x1e0000e0,0x000f000f,0x00000040,0x21400a28,0x1e000124,0x000f000f,0x00800001,0x26401e08, +0x00000000,0x00000000,0x00000001,0x27401e28,0x00000000,0x00000000,0x00000005,0x21200a08, +0x1e000100,0xfff0fff0,0x00000005,0x21600a08,0x1e000140,0xfff0fff0,0x0000000c,0x21640208, +0x16000120,0x00020002,0x0600000c,0x263c0208,0x16000160,0x00020002,0x00000009,0x26380208, +0x16000164,0x00010001,0x00010020,0x34000004,0x0e001400,0x000000e0,0x06000010,0x20000200, +0x16000638,0x00000000,0x00000001,0x27441e28,0x00000000,0x00000000,0x00010020,0x34000004, +0x0e001400,0x00000080,0x20004d01,0x00000807,0x20144001,0x003a0800,0x00000040,0x27440a28, +0x1e000744,0x00100010,0x00000040,0x22000204,0x060000f0,0x020a8000,0x00000001,0x2104020c, +0x00000740,0x00000000,0x00000001,0x2108060c,0x00000000,0x0007001f,0x05000010,0x20000200, +0x02000744,0x00000638,0x0c600033,0x00032014,0x00002108,0x00000000,0x00010020,0x34000004, +0x0e001400,0xffffff80,0x00000040,0x27400a28,0x1e000740,0x00100010,0x05000010,0x20000200, +0x02000740,0x0000063c,0x00010020,0x34000004,0x0e001400,0xffffff20,0x20004d01,0x00007f07, +0x07000031,0x20003a00,0x06000fe0,0x82000010,0x2000007d,0x2000000c,0x2000007d,0x2000000c, +0x00000001,0x21401e28,0x00000000,0x00000000,0x00000040,0x20e00a28,0x1e000140,0x00180018, +0x00000041,0x211a1248,0x16000140,0x00040004,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22021240,0x16000118,0x00200020,0x00000040,0x22001240,0x1600011a,0x07400740, +0x00000001,0xa0000a08,0x00008200,0x00000000,0x00000040,0x21400a28,0x1e000140,0x00010001, +0x05000010,0x20000a20,0x1e000140,0x00110011,0x00010020,0x34000004,0x0e001400,0xffffff70, +0x00000001,0x21c01e28,0x00000000,0x00000000,0x00000009,0x20e40a28,0x1e0001c0,0x00070007, +0x00000040,0x22000204,0x060000e8,0x02480400,0x00000009,0x20e00a28,0x1e0001c0,0x00050005, +0x00000008,0x21280a08,0x1e0000e4,0x00040004,0x00000041,0x21181248,0x160000e0,0x00040004, +0x0a800031,0x21403a6c,0x00000120,0x00000200,0x00000040,0x22001240,0x16000118,0x02400240, +0x00600001,0xa0000208,0x008d0140,0x00000000,0x00600001,0xa0200208,0x008d0160,0x00000000, +0x00600001,0xa0400208,0x008d0180,0x00000000,0x00600001,0xa0600208,0x008d01a0,0x00000000, +0x00000040,0x21c00a28,0x1e0001c0,0x00010001,0x05000010,0x20000a20,0x1e0001c0,0x00060006, +0x00010020,0x34000004,0x0e001400,0xffffff20,0x00000001,0x21c01e28,0x00000000,0x00000000, +0x00000009,0x20e40a28,0x1e0001c0,0x00070007,0x00000040,0x22000204,0x060000ec,0x02480400, +0x00000009,0x20e00a28,0x1e0001c0,0x00050005,0x00000008,0x21280a08,0x1e0000e4,0x00040004, +0x00000041,0x21181248,0x160000e0,0x00040004,0x0a800031,0x21403a6c,0x00000120,0x00000200, +0x00000040,0x22001240,0x16000118,0x05400540,0x00600001,0xa0000208,0x008d0140,0x00000000, +0x00600001,0xa0200208,0x008d0160,0x00000000,0x00600001,0xa0400208,0x008d0180,0x00000000, +0x00600001,0xa0600208,0x008d01a0,0x00000000,0x00000040,0x21c00a28,0x1e0001c0,0x00010001, +0x05000010,0x20000a20,0x1e0001c0,0x00030003,0x00010020,0x34000004,0x0e001400,0xffffff20, +0x02000001,0x4ad422a8,0x00000024,0x00000000,0x00000001,0x2ad80208,0x00000408,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x4ad41ea8,0x00000000,0x00020002, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x4ad41ea8,0x00000000,0x00000000, +0x00000041,0x20e00208,0x1600025c,0x000a000a,0x0000000c,0x21201208,0x160004fa,0x00010001, +0x0000000c,0x21401208,0x160004fa,0x00020002,0x06000010,0x20002260,0x1e000515,0x00010001, +0x00000001,0x26c80228,0x00000260,0x00000000,0x00000001,0x45142288,0x00000768,0x00000000, +0x00000001,0x4ac02288,0x00000515,0x00000000,0x0c000038,0x21180208,0x02000258,0x000000e0, +0x00000040,0x2adc2228,0x1e00050b,0xffecffec,0x00000001,0x4ac22aa8,0x00000508,0x00000000, +0x00000001,0x2ad01608,0x00000000,0x00000000,0x00000001,0x46cc2288,0x00000516,0x00000000, +0x00000040,0x2ac80228,0x02000280,0x00000120,0x00000040,0x2ac40228,0x02000280,0x00000140, +0x00000001,0x2acc0228,0x00000118,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000090, +0x00000040,0x20e02228,0x1e000514,0x00140014,0x00000001,0x2ac81e28,0x00000000,0x00000000, +0x00000001,0x2ac41e28,0x00000000,0x00000000,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000041,0x21180208,0x220006c8,0x00008000,0x02000010,0x20002a60,0x1e000ad4,0x00020002, +0x0000000c,0x26c80228,0x16000118,0x00060006,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x45092288,0x1e00050b,0x00040004,0x0000000c,0x21201228,0x16000022,0x00020002, +0x0000000c,0x20e01228,0x16000020,0x00020002,0x02000010,0x20001240,0x12000020,0x000004fc, +0x00000001,0x4ad61e88,0x00000000,0x00000000,0x00000040,0x21400a28,0x1e000120,0x000f000f, +0x00000040,0x21180a28,0x1e0000e0,0x000f000f,0x00000005,0x26d40a08,0x1e000140,0xfff0fff0, +0x00000005,0x26d00a08,0x1e000118,0xfff0fff0,0x0000000c,0x21800208,0x160006d4,0x00040004, +0x0000000c,0x21600208,0x160006d0,0x00040004,0x00000009,0x46c00248,0x16000180,0x00020002, +0x00000009,0x46c40248,0x16000160,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000040, +0x02000010,0x20001240,0x12000022,0x000004fe,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x240c0208,0x1600040c,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000060, +0x00000001,0x240c1608,0x00000000,0x00000000,0x00000001,0x4ad61e88,0x00000000,0x00010001, +0x00000001,0x24fc1248,0x00000020,0x00000000,0x00000001,0x24fe1248,0x00000022,0x00000000, +0x00000001,0x24140208,0x0000040c,0x00000000,0x00000001,0x24180208,0x0000040c,0x00000000, +0x00000009,0x21181228,0x160006c4,0x00020002,0x00000009,0x21441228,0x160006c0,0x00020002, +0x0000000c,0x20e00208,0x160006d0,0x00020002,0x00800001,0x27c01608,0x00000000,0x00000000, +0x00800001,0x28801608,0x00000000,0x00000000,0x00000040,0x21200a28,0x1e000118,0x000f000f, +0x00000040,0x21600a28,0x1e000144,0x000f000f,0x00000009,0x26d00208,0x160000e0,0x00010001, +0x00800001,0x28001608,0x00000000,0x00000000,0x00800001,0x28401608,0x00000000,0x00000000, +0x0000000c,0x21400a28,0x1e000120,0x00040004,0x0000000c,0x21800a28,0x1e000160,0x00040004, +0x01000005,0x611c0288,0x160006d0,0x000f000f,0x0000000c,0x26d40208,0x160006d4,0x00020002, +0x00000001,0x26c01608,0x00000000,0x00000000,0x00600001,0x27f01e48,0x00000000,0x00030003, +0x00600001,0x27e01e48,0x00000000,0x00020002,0x00600001,0x27d01e48,0x00000000,0x00010001, +0x00600001,0x28801e48,0x00000000,0x000c000c,0x00600001,0x28901e48,0x00000000,0x000d000d, +0x00600001,0x28a01e48,0x00000000,0x000e000e,0x00600001,0x28b01e48,0x00000000,0x000f000f, +0x00600001,0x28001e48,0x00000000,0x00040004,0x00600001,0x28201e48,0x00000000,0x00060006, +0x00600001,0x28301e48,0x00000000,0x00070007,0x00600001,0x28101e48,0x00000000,0x00050005, +0x00600001,0x28401e48,0x00000000,0x00080008,0x00600001,0x28501e48,0x00000000,0x00090009, +0x00600001,0x28601e48,0x00000000,0x000a000a,0x00600001,0x28701e48,0x00000000,0x000b000b, +0x00000041,0x26c40a28,0x0a000140,0x00000180,0x00010020,0x34000004,0x0e001400,0x00000bc0, +0x06000010,0x20000200,0x160006d4,0x00000000,0x00800001,0x2a001608,0x00000000,0x00000000, +0x00800001,0x2a401608,0x00000000,0x00000000,0x00800001,0x2a801608,0x00000000,0x00000000, +0x00800001,0x29c01608,0x00000000,0x00000000,0x00000001,0x26d81608,0x00000000,0x00000000, +0x00000001,0x2a041e48,0x00000000,0x00020002,0x00000001,0x2a021e48,0x00000000,0x00010001, +0x00000001,0x2a141e48,0x00000000,0x00020002,0x00000001,0x2a081e48,0x00000000,0x00040004, +0x00000001,0x2a061e48,0x00000000,0x00030003,0x00000001,0x2a181e48,0x00000000,0x00040004, +0x00000001,0x2a0a1e48,0x00000000,0x00050005,0x00000001,0x2a1a1e48,0x00000000,0x00050005, +0x00000001,0x2a0c1e48,0x00000000,0x00060006,0x00000001,0x2a1c1e48,0x00000000,0x00060006, +0x00000001,0x2a221e48,0x00000000,0x00010001,0x00000001,0x2a0e1e48,0x00000000,0x00070007, +0x00000001,0x2a321e48,0x00000000,0x00010001,0x00000001,0x2a241e48,0x00000000,0x00020002, +0x00000001,0x2a341e48,0x00000000,0x00020002,0x00000001,0x2a261e48,0x00000000,0x00030003, +0x00000001,0x2a361e48,0x00000000,0x00030003,0x00000001,0x2a281e48,0x00000000,0x00040004, +0x00000001,0x2a381e48,0x00000000,0x00040004,0x00000001,0x2a2a1e48,0x00000000,0x00050005, +0x00000001,0x2a3a1e48,0x00000000,0x00050005,0x00000001,0x2a2c1e48,0x00000000,0x00060006, +0x00000001,0x2a3c1e48,0x00000000,0x00060006,0x00000001,0x2a2e1e48,0x00000000,0x00070007, +0x00000001,0x2a3e1e48,0x00000000,0x00070007,0x00000001,0x2a161e48,0x00000000,0x00030003, +0x00000001,0x2a121e48,0x00000000,0x00010001,0x00000001,0x2a1e1e48,0x00000000,0x00070007, +0x00000001,0x2a441e48,0x00000000,0x00020002,0x00000001,0x2a421e48,0x00000000,0x00010001, +0x00000001,0x2a541e48,0x00000000,0x00020002,0x00000001,0x2a481e48,0x00000000,0x00040004, +0x00000001,0x2a461e48,0x00000000,0x00030003,0x00000001,0x2a581e48,0x00000000,0x00040004, +0x00000001,0x2a4a1e48,0x00000000,0x00050005,0x00000001,0x2a5a1e48,0x00000000,0x00050005, +0x00000001,0x2a4c1e48,0x00000000,0x00060006,0x00000001,0x2a5c1e48,0x00000000,0x00060006, +0x00000001,0x2a621e48,0x00000000,0x00010001,0x00000001,0x2a4e1e48,0x00000000,0x00070007, +0x00000001,0x2a721e48,0x00000000,0x00010001,0x00000001,0x2a641e48,0x00000000,0x00020002, +0x00000001,0x2a741e48,0x00000000,0x00020002,0x00000001,0x2a661e48,0x00000000,0x00030003, +0x00000001,0x2a761e48,0x00000000,0x00030003,0x00000001,0x2a681e48,0x00000000,0x00040004, +0x00000001,0x2a781e48,0x00000000,0x00040004,0x00000001,0x2a6a1e48,0x00000000,0x00050005, +0x00000001,0x2a7a1e48,0x00000000,0x00050005,0x00000001,0x2a6c1e48,0x00000000,0x00060006, +0x00000001,0x2a7c1e48,0x00000000,0x00060006,0x00000001,0x2a6e1e48,0x00000000,0x00070007, +0x00000001,0x2a7e1e48,0x00000000,0x00070007,0x00000001,0x2a561e48,0x00000000,0x00030003, +0x00000001,0x2a521e48,0x00000000,0x00010001,0x00000001,0x2a5e1e48,0x00000000,0x00070007, +0x00000001,0x2a841e48,0x00000000,0x00020002,0x00000001,0x2a821e48,0x00000000,0x00010001, +0x00000001,0x2a941e48,0x00000000,0x00020002,0x00000001,0x2a881e48,0x00000000,0x00040004, +0x00000001,0x2a861e48,0x00000000,0x00030003,0x00000001,0x2a981e48,0x00000000,0x00040004, +0x00000001,0x2a8a1e48,0x00000000,0x00050005,0x00000001,0x2a9a1e48,0x00000000,0x00050005, +0x00000001,0x2a8c1e48,0x00000000,0x00060006,0x00000001,0x2a9c1e48,0x00000000,0x00060006, +0x00000001,0x2aa21e48,0x00000000,0x00010001,0x00000001,0x2a8e1e48,0x00000000,0x00070007, +0x00000001,0x2ab21e48,0x00000000,0x00010001,0x00000001,0x2aa41e48,0x00000000,0x00020002, +0x00000001,0x2ab41e48,0x00000000,0x00020002,0x00000001,0x2aa61e48,0x00000000,0x00030003, +0x00000001,0x2ab61e48,0x00000000,0x00030003,0x00000001,0x2aa81e48,0x00000000,0x00040004, +0x00000001,0x2ab81e48,0x00000000,0x00040004,0x00000001,0x2aaa1e48,0x00000000,0x00050005, +0x00000001,0x2aba1e48,0x00000000,0x00050005,0x00000001,0x2aac1e48,0x00000000,0x00060006, +0x00000001,0x2abc1e48,0x00000000,0x00060006,0x00000001,0x2aae1e48,0x00000000,0x00070007, +0x00000001,0x2abe1e48,0x00000000,0x00070007,0x00000001,0x2a961e48,0x00000000,0x00030003, +0x00000001,0x2a921e48,0x00000000,0x00010001,0x00000001,0x2a9e1e48,0x00000000,0x00070007, +0x00000001,0x29c41e48,0x00000000,0x00020002,0x00000001,0x29c21e48,0x00000000,0x00010001, +0x00000001,0x29d41e48,0x00000000,0x00020002,0x00000001,0x29c81e48,0x00000000,0x00040004, +0x00000001,0x29c61e48,0x00000000,0x00030003,0x00000001,0x29d81e48,0x00000000,0x00040004, +0x00000001,0x29ca1e48,0x00000000,0x00050005,0x00000001,0x29da1e48,0x00000000,0x00050005, +0x00000001,0x29cc1e48,0x00000000,0x00060006,0x00000001,0x29dc1e48,0x00000000,0x00060006, +0x00000001,0x29e21e48,0x00000000,0x00010001,0x00000001,0x29ce1e48,0x00000000,0x00070007, +0x00000001,0x29f21e48,0x00000000,0x00010001,0x00000001,0x29e41e48,0x00000000,0x00020002, +0x00000001,0x29f41e48,0x00000000,0x00020002,0x00000001,0x29e61e48,0x00000000,0x00030003, +0x00000001,0x29f61e48,0x00000000,0x00030003,0x00000001,0x29e81e48,0x00000000,0x00040004, +0x00000001,0x29f81e48,0x00000000,0x00040004,0x00000001,0x29ea1e48,0x00000000,0x00050005, +0x00000001,0x29fa1e48,0x00000000,0x00050005,0x00000001,0x29ec1e48,0x00000000,0x00060006, +0x00000001,0x29fc1e48,0x00000000,0x00060006,0x00000001,0x29ee1e48,0x00000000,0x00070007, +0x00000001,0x29fe1e48,0x00000000,0x00070007,0x00000001,0x29d61e48,0x00000000,0x00030003, +0x00000001,0x29d21e48,0x00000000,0x00010001,0x00000001,0x29de1e48,0x00000000,0x00070007, +0x00010020,0x34000004,0x0e001400,0x00000780,0x06000010,0x20000200,0x160006d0,0x00000000, +0x00000001,0x21181608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000003a0, +0x20004d01,0x00000907,0x00000040,0x22000204,0x060000f0,0x02890000,0x00000001,0x2128060c, +0x00000000,0x000f000f,0x00000001,0x21240228,0x000006d8,0x00000000,0x00000001,0x21200228, +0x00000118,0x00000000,0x05800010,0x20001220,0x028d07c0,0x000006d4,0x00800001,0x28c01608, +0x00000000,0x00000000,0x00800001,0x29001608,0x00000000,0x00000000,0x0c800031,0x21403a4c, +0x00000120,0x00000200,0x00800001,0x29401608,0x00000000,0x00000000,0x00800001,0x29801608, +0x00000000,0x00000000,0x00000040,0x20e00208,0x020006d0,0x00004118,0x00810001,0x28c01248, +0x008d0140,0x00000000,0x05800010,0x20001220,0x028d07e0,0x000006d4,0x00810001,0x28e01248, +0x008d0160,0x00000000,0x05800010,0x20001220,0x028d0800,0x000006d4,0x00810001,0x29001248, +0x008d0180,0x00000000,0x05800010,0x20001220,0x028d0820,0x000006d4,0x00810001,0x29201248, +0x008d01a0,0x00000000,0x05800010,0x20001220,0x028d0840,0x000006d4,0x00810001,0x29401248, +0x008d01c0,0x00000000,0x05800010,0x20001220,0x028d0860,0x000006d4,0x00810001,0x29601248, +0x008d01e0,0x00000000,0x05800010,0x20001220,0x028d0880,0x000006d4,0x00810001,0x29801248, +0x008d0200,0x00000000,0x05800010,0x20001220,0x028d08a0,0x000006d4,0x00810001,0x29a01248, +0x008d0220,0x00000000,0x02000010,0x20000200,0x220000e0,0x0000011c,0x00010020,0x34000004, +0x0e001400,0x00000110,0x0000000c,0x20e02228,0x1600011c,0x00010001,0x04800010,0x20001220, +0x0a8d09c0,0x000000e0,0x00810001,0x28c01648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d09e0,0x000000e0,0x00810001,0x28e01648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0a00,0x000000e0,0x00810001,0x29001648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0a20,0x000000e0,0x00810001,0x29201648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0a40,0x000000e0,0x00810001,0x29401648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0a60,0x000000e0,0x00810001,0x29601648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0a80,0x000000e0,0x00810001,0x29801648,0x00000000,0x00000000,0x04800010,0x20001220, +0x0a8d0aa0,0x000000e0,0x00810001,0x29a01648,0x00000000,0x00000000,0x00800040,0x21201208, +0x128d08c0,0x008d08e0,0x00800040,0x21601208,0x128d0900,0x008d0920,0x00800040,0x21a01208, +0x128d0940,0x008d0960,0x00800040,0x21e01208,0x128d0980,0x008d09a0,0x00000040,0x21180208, +0x16000118,0x00100010,0x20013640,0x0b0909e7,0x20013640,0x0f0d0be7,0x05000010,0x20000200, +0x02000118,0x000006d0,0x20013640,0x0b0909e7,0x20012b40,0x0a0909e7,0x606d2140,0x090909ad, +0x00200040,0x21200208,0x02450120,0x00450128,0x00000040,0x20e00208,0x02000120,0x00000124, +0x00000040,0x26c00208,0x020006c0,0x000000e0,0x00010020,0x34000004,0x0e001400,0xfffffc60, +0x00000040,0x26d80208,0x160006d8,0x00100010,0x00a00040,0x28401248,0x168d0840,0x00100010, +0x00a00040,0x27c01248,0x168d07c0,0x00100010,0x05000010,0x20000200,0x020006d8,0x000006d4, +0x00a00040,0x28801248,0x168d0880,0x00100010,0x00a00040,0x28001248,0x168d0800,0x00100010, +0x00010020,0x34000004,0x0e001400,0xfffffbc0,0x00000020,0x34000004,0x0e001400,0x00000330, +0x06000010,0x20000200,0x160006d4,0x00000000,0x00000001,0x26d81608,0x00000000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000300,0x06000010,0x20000200,0x160006d0,0x00000000, +0x00000001,0x21181608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000260, +0x20004d01,0x00000907,0x00000040,0x22000204,0x060000f0,0x02890000,0x00000001,0x2128060c, +0x00000000,0x000f000f,0x00000001,0x21240228,0x000006d8,0x00000000,0x00000001,0x21200228, +0x00000118,0x00000000,0x05800010,0x20001220,0x028d07c0,0x000006d4,0x00800001,0x28c01608, +0x00000000,0x00000000,0x00800001,0x29001608,0x00000000,0x00000000,0x0c800031,0x21403a4c, +0x00000120,0x00000200,0x00800001,0x29401608,0x00000000,0x00000000,0x00800001,0x29801608, +0x00000000,0x00000000,0x00000040,0x21180208,0x16000118,0x00100010,0x00810001,0x28c01248, +0x008d0140,0x00000000,0x05800010,0x20001220,0x028d07e0,0x000006d4,0x00810001,0x28e01248, +0x008d0160,0x00000000,0x05800010,0x20001220,0x028d0800,0x000006d4,0x00800040,0x21201208, +0x128d08c0,0x008d08e0,0x00810001,0x29001248,0x008d0180,0x00000000,0x05800010,0x20001220, +0x028d0820,0x000006d4,0x00810001,0x29201248,0x008d01a0,0x00000000,0x05800010,0x20001220, +0x028d0840,0x000006d4,0x00800040,0x21601208,0x128d0900,0x008d0920,0x00810001,0x29401248, +0x008d01c0,0x00000000,0x05800010,0x20001220,0x028d0860,0x000006d4,0x20013640,0x0b0909e7, +0x00810001,0x29601248,0x008d01e0,0x00000000,0x05800010,0x20001220,0x028d0880,0x000006d4, +0x00800040,0x21a01208,0x128d0940,0x008d0960,0x00810001,0x29801248,0x008d0200,0x00000000, +0x05800010,0x20001220,0x028d08a0,0x000006d4,0x00810001,0x29a01248,0x008d0220,0x00000000, +0x05000010,0x20000200,0x02000118,0x000006d0,0x00800040,0x21e01208,0x128d0980,0x008d09a0, +0x20013640,0x0f0d0be7,0x20013640,0x0b0909e7,0x20012b40,0x0a0909e7,0x606d2140,0x090909ad, +0x00200040,0x21200208,0x02450120,0x00450128,0x00000040,0x20e00208,0x02000120,0x00000124, +0x00000040,0x26c00208,0x020006c0,0x000000e0,0x00010020,0x34000004,0x0e001400,0xfffffda0, +0x00000040,0x26d80208,0x160006d8,0x00100010,0x00a00040,0x28401248,0x168d0840,0x00100010, +0x00a00040,0x27c01248,0x168d07c0,0x00100010,0x05000010,0x20000200,0x020006d8,0x000006d4, +0x00a00040,0x28801248,0x168d0880,0x00100010,0x00a00040,0x28001248,0x168d0800,0x00100010, +0x00010020,0x34000004,0x0e001400,0xfffffd00,0x02000010,0x20002a60,0x1e000ad4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000041,0x26c40a28,0x1e0006c4,0x00100010, +0x00000040,0x22000204,0x06000110,0x02180000,0x00000001,0x2128160c,0x00000000,0x00000000, +0x00000040,0x20e00208,0x020002a0,0x00000260,0x02000010,0x20002260,0x1e00076d,0x00010001, +0x00000001,0x41922aa8,0x00000518,0x00000000,0x00000001,0x41902aa8,0x00000513,0x00000000, +0x00000040,0x24c80208,0x160004c8,0x00010001,0x00000001,0x22040a28,0x00000268,0x00000000, +0x0a400031,0x21803a0c,0x00000120,0x00000200,0x00000001,0x26d00a28,0x00000248,0x00000000, +0x00000009,0x22000208,0x16000180,0x00030003,0x00000040,0x22a00208,0x020000e0,0x00004200, +0x00000040,0x24c40208,0x020004c4,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000130, +0x01000010,0x20002a60,0x1e000513,0xffffffff,0x00010020,0x34000004,0x0e001400,0x00000080, +0x00000040,0x21182a28,0x1e000513,0x001a001a,0x0000000c,0x20e00208,0x16000200,0x00030003, +0x00000041,0x21201248,0x16000118,0x00040004,0x00000040,0x227c0208,0x0200027c,0x000000e0, +0x00000040,0x22001240,0x16000120,0x02400240,0x0000000c,0x21400208,0x16008000,0x00030003, +0x00000040,0x227c0208,0x0200027c,0x00004140,0x00000001,0xa0000208,0x00000200,0x00000000, +0x02000010,0x20002a60,0x1e000ac2,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x22000208,0x000002b0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000050, +0x02000010,0x20002a60,0x1e000190,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000030, +0x02000010,0x20002a60,0x1e000ad4,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000010, +0x0000000c,0x22000a08,0x1e000200,0x00020002,0x02000010,0x20002260,0x1e00076d,0x00020002, +0x00010020,0x34000004,0x0e001400,0x000001f0,0x01000010,0x20002a60,0x1e000192,0xffffffff, +0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000040,0x21202a28,0x1e000192,0x001a001a, +0x0000000c,0x20e00208,0x16000200,0x00030003,0x0000000c,0x21180208,0x16000420,0x00030003, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x227c0208,0x0200027c,0x000000e0, +0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0x227c0208,0x0200027c,0x00004118, +0x00000001,0xa0000208,0x00000200,0x00000000,0x00000040,0x21600208,0x02000204,0x00004200, +0x00000040,0x22040228,0x02000160,0x00000420,0x05000002,0x22040a28,0x0a0006d0,0x00000204, +0x04000002,0x22040a28,0x1e000204,0x00000000,0x02000010,0x20002a60,0x1e000ac2,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22000208,0x000002b0,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000b0,0x02000010,0x20002a60,0x1e000190,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000040,0x02000010,0x20002a60,0x1e000ad4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22000208,0x000002a8,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002a60,0x1e000192,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000030,0x02000010,0x20002a60,0x1e000ad4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x0000000c,0x22000a08,0x1e000200,0x00020002, +0x00000001,0x24200208,0x0000041c,0x00000000,0x00000001,0x241c0208,0x00000200,0x00000000, +0x06000010,0x20000a20,0x1e0002b8,0x00000000,0x00000001,0x22080208,0x00000200,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000070,0x04000010,0x20000200,0x02000200,0x000002b8, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x20e00208,0x020002b8,0x00004200, +0x00000040,0x22080208,0x02000200,0x000040e0,0x03000010,0x20000200,0x16000208,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22081608,0x00000000,0x00010001, +0x01000010,0x20002a60,0x1e000ac2,0xffffffff,0x00010020,0x34000004,0x0e001400,0x00001550, +0x00000040,0x20e02a28,0x1e000ac2,0x001a001a,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22001240,0x16000118,0x02400240,0x00000001,0xa0000208,0x00000200,0x00000000, +0x00000040,0x220c2268,0x2200052c,0x00000187,0x04000010,0x20001a40,0x1200020c,0x0000005c, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21101228,0x0000005c,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21101228,0x1a00005e,0x0000020c, +0x03000010,0x20002260,0x1e000ac0,0x00010001,0x00000001,0x420c0a68,0x00000110,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000210,0x00000040,0x20e00a08,0x1e000ac8,0x00020002, +0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001e0, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x01000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x21182228,0x1e008000,0x00050005, +0x06000010,0x20001a20,0x0a00020c,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000070, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0x44002260,0x00008000,0x00000000,0x00000048,0x21201a28,0x1e00020c,0x00070007, +0x0000000c,0x61180a8c,0x1e000120,0x00030003,0x00000001,0xc0002288,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000f0,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x21182228,0x1e008000,0xfffbfffb, +0x04000010,0x20001a20,0x0a00020c,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000070, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0x44002260,0x00008000,0x00000000,0x00000048,0x21201a28,0x1e00020c,0x00070007, +0x0000000c,0x61180a8c,0x1e000120,0x00030003,0x00000001,0xc0002288,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x0000020c,0x00000000, +0x06000010,0x20002260,0x1e000ac0,0x00010001,0x00010020,0x34000004,0x0e001400,0x000007d0, +0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x000007b0, +0x00000040,0x20e02228,0x1e000768,0x006e006e,0x00000001,0x2ad00a08,0x000006c8,0x00000000, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0x26c80228,0x00008000,0x00000000,0x02000010,0x20002260,0x1e000768,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000230,0x05000010,0x20000200,0x02000ad0,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000009,0x20e00208,0x16000ad0,0x00030003, +0x06000010,0x20002260,0x1e000509,0x000a000a,0x0c000038,0x21180208,0x020000e0,0x000006c8, +0x00000040,0x21200228,0x1e000118,0xfff8fff8,0x05000002,0x2adc0a28,0x1e000120,0x00050005, +0x00010020,0x34000004,0x0e001400,0x00000130,0x00000040,0x40e02268,0x0a000509,0x00004adc, +0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff,0x04000002,0x65090a88,0x1e000118,0x00010001, +0x00000020,0x34000004,0x0e001400,0x000000f0,0x04000010,0x20000200,0x02000ad0,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x000000d0,0x06000010,0x20000200,0x16000ad8,0x000a000a, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00a08,0x1e0006c8,0x000c000c, +0x02000010,0x20002260,0x1e000768,0x00000000,0x0c000038,0x21180208,0x020000e0,0x00000ad0, +0x00000040,0x21200228,0x1e000118,0xfff4fff4,0x05000002,0x2adc0a28,0x1e000120,0x00050005, +0x00010020,0x34000004,0x0e001400,0x00000020,0x05000002,0x20e00a28,0x1e000adc,0x00010001, +0x04000002,0x2adc0a28,0x1e0000e0,0x00000000,0x00000040,0x40e02268,0x0a000509,0x00000adc, +0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff,0x04000002,0x65090a88,0x1e000118,0x00010001, +0x03000010,0x20002260,0x1e000509,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x45091e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000400, +0x06000010,0x20002260,0x1e000509,0x00d400d4,0x00010020,0x34000004,0x0e001400,0x000003e0, +0x00000001,0x45091e88,0x00000000,0x00d400d4,0x00000020,0x34000004,0x0e001400,0x000003c0, +0x05000010,0x20000200,0x02000ad0,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000140, +0x00000041,0x20e00208,0x16000ad0,0x000a000a,0x00000040,0x21602228,0x1e000768,0x00100010, +0x0c000038,0x21180208,0x020000e0,0x000006c8,0x00000040,0x22001240,0x16000160,0x05080508, +0x00000040,0x21200228,0x1e000118,0xfff6fff6,0x05000002,0x21400a28,0x1e000120,0x00050005, +0x04000002,0x2adc0a28,0x1e000140,0x00000000,0x06000010,0x20002220,0x0a008000,0x00000adc, +0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e02228,0x1e000768,0x00100010, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x41182268,0x0a008000,0x00004adc, +0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x61400a8c,0x1e000120,0x00010001, +0x00000001,0xc0002288,0x00000140,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x000000c0, +0x04000010,0x20000200,0x02000ad0,0x000006c8,0x00010020,0x34000004,0x0e001400,0x000000a0, +0x00000041,0x20e00a08,0x1e0006c8,0x00080008,0x00000040,0x21402228,0x1e000768,0x00100010, +0x0c000038,0x21180208,0x020000e0,0x00000ad0,0x00000040,0x22001240,0x16000140,0x05080508, +0x00000040,0x21200228,0x1e000118,0xfff8fff8,0x05000002,0x2adc0a28,0x1e000120,0x00050005, +0x00000040,0x41602268,0x0a008000,0x00000adc,0x05000002,0x21801a28,0x1e000160,0x00ff00ff, +0x04000002,0x61a00a8c,0x1e000180,0x00010001,0x00000001,0xc0002288,0x000001a0,0x00000000, +0x00000040,0x20e02228,0x1e000768,0x00790079,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22001240,0x16000118,0x02400240,0x00000040,0xa0000208,0x02008000,0x000006c8, +0x00000040,0x21202228,0x1e000768,0x00100010,0x00000041,0x21401248,0x16000120,0x00040004, +0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0xa0000208,0x02008000,0x00000ad0, +0x06000010,0x20000200,0x16000ad8,0x001e001e,0x00010020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x20e42228,0x1e000768,0x00100010,0x00000040,0x20e02228,0x1e000768,0x00790079, +0x00000041,0x21181248,0x160000e4,0x00040004,0x00000041,0x211a1248,0x160000e0,0x00040004, +0x00000040,0x22021240,0x16000118,0x02400240,0x00000040,0x22001240,0x1600011a,0x02400240, +0x00000040,0x26c80228,0x02008000,0x0000c200,0x00000041,0x21200a28,0x1e0006c8,0x00020002, +0x00000040,0x22001240,0x160000e4,0x05080508,0x0c000038,0x21400a28,0x0a000120,0x00000ad0, +0x04000002,0x21600a28,0x1e000140,0xfffcfffc,0x05000002,0x2adc0a28,0x1e000160,0x00040004, +0x00000040,0x41802268,0x0a008000,0x00000adc,0x05000002,0x21a01a28,0x1e000180,0x00ff00ff, +0x04000002,0x61c00a8c,0x1e0001a0,0x00010001,0x00000001,0xc0002288,0x000001c0,0x00000000, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x03000010,0x20002220,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001e88,0x00000000,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000070, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x06000010,0x20002220,0x1e008000,0x00ff00ff,0x00010020,0x34000004,0x0e001400,0x00000030, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001e88,0x00000000,0x00ff00ff,0x00000040,0x20e02228,0x1e0006cc,0x006e006e, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0xa0000208,0x00000200,0x00000000,0x00000001,0x45121e88,0x00000000,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000008e0,0x0000000c,0x220c1208,0x160004fa,0x00020002, +0x0000000c,0x22101208,0x160004fa,0x00010001,0x06000010,0x20000200,0x1600020c,0x000a000a, +0x00010020,0x34000004,0x0e001400,0x00000030,0x04000010,0x20000a20,0x1e000acc,0x00040004, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x220c1608,0x00000000,0x000a000a, +0x00000040,0x20e00a08,0x1e000ac8,0x00020002,0x04000002,0x220c0208,0x1600020c,0x00020002, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020, +0x01000010,0x20002260,0x1e00076d,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0, +0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x20e00a08,0x1e000ac8,0x00040004, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001c0, +0x02000010,0x20002260,0x1e00076d,0x00020002,0x00010020,0x34000004,0x0e001400,0x000001a0, +0x00000041,0x20e00208,0x16000210,0x000a000a,0x00000041,0x20e40208,0x1600020c,0x000e000e, +0x00000041,0x2ad00208,0x02000260,0x0000020c,0x00000040,0x21240208,0x1e0000e0,0xfff6fff6, +0x00000040,0x21180208,0x020000e0,0x000040e4,0x06000010,0x20000200,0x02000200,0x00000ad0, +0x00000041,0x21200208,0x02000118,0x00000260,0x0c000038,0x24040208,0x02000120,0x00000124, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006, +0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000ad0, +0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa, +0x05000002,0x2adc0a28,0x1e000120,0x00040004,0x00000040,0x41602268,0x0a008000,0x00000adc, +0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001, +0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x000004f0, +0x04000010,0x20000200,0x02000200,0x00000ad0,0x00010020,0x34000004,0x0e001400,0x000004d0, +0x00000040,0x20e00208,0x02000ad0,0x00004200,0x0c000038,0x21180208,0x020000e0,0x00000210, +0x00000040,0x24040208,0x02000404,0x00000118,0x00000020,0x34000004,0x0e001400,0x00000490, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000040,0x20e00a08,0x1e000ac4,0x00030003, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020, +0x01000010,0x20002260,0x1e00076d,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000040,0x20e00a08,0x1e000ac4,0x00040004,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000180,0x02000010,0x20002260,0x1e00076d,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000160,0x0000000c,0x20e00208,0x1600020c,0x00010001, +0x00000041,0x2ad00208,0x02000260,0x000000e0,0x06000010,0x20000200,0x02000200,0x00000ad0, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006, +0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000ad0, +0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa, +0x05000002,0x2adc0a28,0x1e000120,0x00020002,0x00000040,0x41602268,0x0a008000,0x00000adc, +0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001, +0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x000002b0, +0x04000010,0x20000200,0x02000200,0x00000ad0,0x00010020,0x34000004,0x0e001400,0x00000290, +0x00000040,0x20e00208,0x02000ad0,0x00004200,0x0000000c,0x20e40208,0x16000210,0x00010001, +0x0c000038,0x21180208,0x020000e0,0x000000e4,0x00000040,0x24040208,0x02000404,0x00000118, +0x00000020,0x34000004,0x0e001400,0x00000240,0x06000010,0x20000200,0x02000200,0x00000404, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000041,0x20e00208,0x16000200,0x00060006, +0x00000040,0x21402a28,0x1e000ac2,0x00010001,0x0c000038,0x21180208,0x020000e0,0x00000404, +0x00000040,0x22001240,0x16000140,0x05080508,0x00000040,0x21200228,0x1e000118,0xfffafffa, +0x05000002,0x2adc0a28,0x1e000120,0x00060006,0x00000040,0x41602268,0x0a008000,0x00000adc, +0x05000002,0x21801a28,0x1e000160,0x00ff00ff,0x04000002,0x61a00a8c,0x1e000180,0x00010001, +0x00000001,0xc0002288,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000170, +0x04000010,0x20000200,0x02000200,0x00000404,0x00010020,0x34000004,0x0e001400,0x00000150, +0x00000009,0x20e00208,0x16000404,0x00030003,0x02000010,0x20002260,0x1e00076d,0x00020002, +0x0c000038,0x21180208,0x020000e0,0x00000200,0x00000040,0x21200228,0x1e000118,0xfff8fff8, +0x05000002,0x2adc0a28,0x1e000120,0x000a000a,0x00010020,0x34000004,0x0e001400,0x00000010, +0x0c000038,0x2adc0a28,0x0e000adc,0x00000003,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x06000010,0x20002220,0x0a008000,0x00000adc, +0x00010020,0x34000004,0x0e001400,0x00000070,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000040,0x41182268,0x0a008000,0x00004adc, +0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x61400a8c,0x1e000120,0x00010001, +0x00000001,0xc0002288,0x00000140,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001e88,0x00000000,0x00000000,0x00000040,0x20e00a08,0x1e000ac8,0x00010001, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x45121e88,0x00000000,0x00010001,0x00000041,0x2ad00208,0x02000260,0x0000020c, +0x00000020,0x34000004,0x0e001400,0x00000080,0x00000040,0x20e00a08,0x1e000ac4,0x00010001, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000030, +0x0000000c,0x20e00208,0x1600020c,0x00010001,0x00000041,0x2ad00208,0x02000260,0x000000e0, +0x00000020,0x34000004,0x0e001400,0x00000020,0x00000001,0x45121e88,0x00000000,0x00000000, +0x00000001,0x2ad00208,0x00000404,0x00000000,0x00000040,0x20e02a28,0x1e000ac2,0x00010001, +0x00000041,0x20e40208,0x160006c0,0x00140014,0x00000040,0x22001240,0x160000e0,0x05080508, +0x0c000038,0x21180208,0x020000e4,0x00000ad0,0x0000000c,0x211c2208,0x1e008000,0x00020002, +0x00000040,0x2adc0228,0x02000118,0x0000011c,0x01000010,0x20002260,0x1e00076e,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22700a28,0x0a000270,0x000046d0, +0x04000040,0x22040228,0x02000204,0x00004200,0x00000040,0x226c0a28,0x1e00026c,0x00010001, +0x00000001,0x220c0a08,0x00000740,0x00000000,0x00000001,0x21100a08,0x00000274,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000060,0x01000010,0x20002260,0x1e00076e,0x00000000, +0x00000040,0x22040228,0x0200020c,0x00004110,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22040a28,0x0a000204,0x000046d0,0x05000002,0x22040a28,0x0a0006d0,0x00000204, +0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00208,0x0200020c,0x00004270, +0x00000040,0x21180228,0x020000e0,0x00004200,0x05000002,0x22040a28,0x0a000118,0x000006d0, +0x00000001,0x22680a28,0x00000204,0x00000000,0x02000010,0x20002260,0x1e000510,0x00000000, +0x00000040,0x22700228,0x02004204,0x0000020c,0x00000001,0x21101e28,0x00000000,0x00000000, +0x00000001,0x22bc0a28,0x00000268,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e00a28,0x0a000204,0x00000264,0x00000040,0x21100a28,0x0a0000e0,0x000046d0, +0x00000001,0x22b80a28,0x00000110,0x00000000,0x00000040,0x21202a28,0x1e000ac2,0x001a001a, +0x0000000c,0x21180208,0x16000260,0x00030003,0x0000000c,0x20e00208,0x16000208,0x00030003, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22780208,0x02000278,0x00000118, +0x00000040,0x227c0208,0x0200027c,0x000000e0,0x00000040,0x22001240,0x16000140,0x02400240, +0x00000001,0xa0000208,0x00000208,0x00000000,0x00000001,0x20e002e8,0x000002a8,0x00000000, +0x00000001,0x221002e8,0x000002b0,0x00000000,0x00000001,0x20e412e8,0x000004da,0x00000000, +0x00000001,0x211802e8,0x000002ac,0x00000000,0x00000001,0x211c12e8,0x000004dc,0x00000000, +0x00000001,0x212002e8,0x00000258,0x00000000,0x00000001,0x214412e8,0x000004f4,0x00000000, +0x00000001,0x214002e8,0x0000025c,0x00000000,0x0c000038,0x21600a28,0x0e0006d0,0x00000002, +0x0040015b,0x10820000,0x792109c9,0x01c7240e,0x02000010,0x20002260,0x1e000510,0x00000000, +0x00000001,0x45182aa8,0x00000513,0x00000000,0x00000001,0x45132aa8,0x00000508,0x00000000, +0x00000041,0x21403ae8,0x3a000140,0x00000144,0x00000001,0x22081e28,0x00000000,0x00020002, +0x00000001,0x220c1e28,0x00000000,0x00040004,0x0040015b,0x10820000,0xf92109c9,0x02372411, +0x00000001,0x22740a28,0x00000740,0x00000000,0x00000001,0x45082aa8,0x00000ad4,0x00000000, +0x00000041,0x22103ae8,0x3a000210,0x00000120,0x09000038,0x221c3ae8,0x3a000210,0x00000140, +0x00000040,0x22100a28,0x0a000204,0x00004160,0x00010020,0x34000004,0x0e001400,0x00000030, +0x0000000c,0x20e00a28,0x1e000210,0x00020002,0x00000040,0x22100a28,0x0a000210,0x000000e0, +0x00000020,0x34000004,0x0e001400,0x00000050,0x02000010,0x20002260,0x1e000510,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00208,0x02000278,0x0000427c, +0x00000009,0x21180228,0x160000e0,0x00030003,0x05000002,0x22100a28,0x0a000118,0x00000210, +0x00000001,0x26c81608,0x00000000,0x00000000,0x00000001,0x26cc1e28,0x00000000,0x00000000, +0x00000001,0x22141608,0x00000000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005, +0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x05000010,0x20000a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070, +0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f, +0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004, +0x00000040,0x22001240,0x16000140,0x02400240,0x00000040,0x26c80208,0x020006c8,0x00008000, +0x00000040,0x22140208,0x16000214,0x00010001,0x00000040,0x26cc0a28,0x1e0006cc,0x00010001, +0x05000010,0x20000a20,0x1e0006cc,0x00050005,0x00010020,0x34000004,0x0e001400,0xfffffef0, +0x06000010,0x20000200,0x16000214,0x00030003,0x00010020,0x34000004,0x0e001400,0x000002f0, +0x00000001,0x26d00608,0x00000000,0xffffffff,0x00000001,0x26d41608,0x00000000,0x00000000, +0x00000001,0x26cc1e28,0x00000000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005, +0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x05000010,0x20000a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x000001a0, +0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f, +0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004, +0x00000040,0x22001240,0x16000140,0x02400240,0x04000010,0x20000200,0x02008000,0x000006d0, +0x00010020,0x34000004,0x0e001400,0x00000060,0x00000041,0x20e02a28,0x1e000ad4,0x00050005, +0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x00000001,0x26d00a08,0x00008000,0x00000000,0x00000041,0x20e02a28,0x1e000ad4,0x00050005, +0x00000040,0x21180a28,0x1e0000e0,0x005f005f,0x00000040,0x21200a28,0x0a000118,0x000006cc, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x06000010,0x20000200,0x02008000,0x000006d4,0x00010020,0x34000004,0x0e001400,0x00000060, +0x00000041,0x20e02a28,0x1e000ad4,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x005f005f, +0x00000040,0x21200a28,0x0a000118,0x000006cc,0x00000041,0x21401248,0x16000120,0x00040004, +0x00000040,0x22001240,0x16000140,0x02400240,0x00000001,0x26d40a08,0x00008000,0x00000000, +0x00000040,0x26cc0a28,0x1e0006cc,0x00010001,0x05000010,0x20000a20,0x1e0006cc,0x00050005, +0x00010020,0x34000004,0x0e001400,0xfffffdc0,0x04000010,0x20000200,0x060006d0,0xffffffff, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c80208,0x020006c8,0x000046d0, +0x00000040,0x22140208,0x1e000214,0xffffffff,0x06000010,0x20000200,0x160006d4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c80208,0x020006c8,0x000046d4, +0x00000040,0x22140208,0x1e000214,0xffffffff,0x06000010,0x20000200,0x16000214,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000060,0x00000001,0x20e002e8,0x000006c8,0x00000000, +0x00000001,0x20e402e8,0x00000214,0x00000000,0x09000038,0x21183ae8,0x3a0000e0,0x000000e4, +0x00000001,0x21203a08,0x00000118,0x00000000,0x00000040,0x26c80208,0x16000120,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000120,0x02000010,0x20002a60,0x1e000ad4,0x00000000, +0x00000001,0x26c81608,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070, +0x00000040,0x20e00208,0x1600029c,0x00680068,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22001240,0x16000118,0x02400240,0x00000041,0x21200a28,0x1e008000,0x00050005, +0x00000001,0x22141608,0x00000000,0x00010001,0x0000000c,0x26c80a08,0x1e000120,0x00020002, +0x00000020,0x34000004,0x0e001400,0x00000080,0x02000010,0x20002a60,0x1e000ad4,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x20e00208,0x16000294,0x005e005e, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000041,0x21200a28,0x1e008000,0x00050005,0x00000001,0x22141608,0x00000000,0x00010001, +0x0000000c,0x26c80a08,0x1e000120,0x00020002,0x00000001,0x20e002e8,0x000006c8,0x00000000, +0x02000010,0x20002a60,0x1e000ad4,0x00010001,0x04000002,0x26c40a28,0x1e0006c4,0x00010001, +0x09000038,0x21183ae8,0x3e0000e0,0x41a00000,0x0a000038,0x21203ae8,0x3e000118,0x3ecccccd, +0x04000002,0x22183ae8,0x3e000120,0x3dcccccd,0x00000001,0x26c83ae8,0x00000218,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e002e8,0x000006c0,0x00000000, +0x00000001,0x20e40ae8,0x000006c4,0x00000000,0x09000038,0x21183ae8,0x3a0000e0,0x000000e4, +0x06000010,0x20003ae0,0x3e000118,0x40400000,0x00010020,0x34000004,0x0e001400,0x000000b0, +0x00000041,0x20e40a28,0x1e0006c4,0x00140014,0x00000001,0x20e002e8,0x000006c0,0x00000000, +0x00000001,0x21180ae8,0x000000e4,0x00000000,0x09000038,0x21203ae8,0x3a0000e0,0x00000118, +0x0a000038,0x22183ae8,0x3e000120,0x3ecccccd,0x00000020,0x34000004,0x0e001400,0x00000050, +0x00000041,0x20e40a28,0x1e0006c4,0x00140014,0x00000001,0x20e002e8,0x000006c0,0x00000000, +0x00000001,0x21180ae8,0x000000e4,0x00000000,0x09000038,0x21203ae8,0x3a0000e0,0x00000118, +0x0a000038,0x22183ae8,0x3e000120,0x3ecccccd,0x04000002,0x22183ae8,0x3e000218,0x3dcccccd, +0x06000010,0x20000200,0x16000ad8,0x000a000a,0x00000041,0x20e03ae8,0x3e000218,0x42c80000, +0x09000038,0x21183ae8,0x3a0000e0,0x000006c8,0x00000001,0x26c83a08,0x00000118,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000130,0x00000040,0x20e00228,0x1e0006c8,0xff9cff9c, +0x03000010,0x20002260,0x1e000ac0,0x00010001,0x0c000038,0x21180a28,0x0e0000e0,0x00000004, +0x05000002,0x26cc0a28,0x1e000118,0x00090009,0x00010020,0x34000004,0x0e001400,0x000000e0, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x04000010,0x20002220,0x0a008000,0x000046cc,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001e88,0x00000000,0x00020002,0x00000020,0x34000004,0x0e001400,0x00000060, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000040,0x41182268,0x0a008000,0x000006cc,0x05000002,0x21201a28,0x1e000118,0x00ff00ff, +0x04000002,0x61400a8c,0x1e000120,0x00010001,0x00000001,0xc0002288,0x00000140,0x00000000, +0x02000010,0x20002a60,0x1e000ad4,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000001,0x20e002e8,0x000006c0,0x00000000,0x00000001,0x20e40ae8,0x000006c4,0x00000000, +0x09000038,0x21183ae8,0x3a0000e0,0x000000e4,0x06000010,0x20003ae0,0x3e000118,0x40400000, +0x00010020,0x34000004,0x0e001400,0x00000340,0x00000040,0x20e02a28,0x1e000ad4,0x00150015, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0x26cc0208,0x00008000,0x00000000,0x06000010,0x20000200,0x160006c8,0x00b400b4, +0x00010020,0x34000004,0x0e001400,0x00000210,0x01000010,0x20002a60,0x1e000ad4,0x00020002, +0x00010020,0x34000004,0x0e001400,0x000001f0,0x01000010,0x20002a60,0x1e000ad4,0x00010001, +0x00010020,0x34000004,0x0e001400,0x000001d0,0x05000010,0x20003ae0,0x3e000218,0x40800000, +0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000041,0x211c2a28,0x1e000ad4,0x00050005, +0x0000000c,0x20e00208,0x160006c0,0x00030003,0x00000040,0x21200a08,0x1e00011c,0x005f005f, +0x0c000038,0x21180208,0x020000e0,0x000006c4,0x00000040,0x21240208,0x02000120,0x000006cc, +0x00000041,0x21401248,0x16000124,0x00040004,0x00000040,0x22021240,0x16000140,0x02400240, +0x00000001,0xa2000228,0x00000118,0x00000000,0x00000040,0x21600208,0x160006cc,0x00010001, +0x0d000038,0x21800208,0x06000160,0x00000005,0x00000040,0x21a00208,0x02000120,0x00000180, +0x00000041,0x21c01248,0x160001a0,0x00040004,0x00000040,0x22001240,0x160001c0,0x02400240, +0x00000001,0xa0000a28,0x00008200,0x00000000,0x00000040,0x20e00208,0x160006cc,0x00020002, +0x0d000038,0x211c0208,0x060000e0,0x00000005,0x00000040,0x21e00208,0x02000120,0x0000011c, +0x00000041,0x21241248,0x160001e0,0x00040004,0x00000040,0x22001240,0x16000124,0x02400240, +0x00000001,0xa0000228,0x00000118,0x00000000,0x00000040,0x21400208,0x160006cc,0x00030003, +0x0d000038,0x21600208,0x06000140,0x00000005,0x00000040,0x21800208,0x02000120,0x00000160, +0x00000041,0x21a01248,0x16000180,0x00040004,0x00000040,0x22001240,0x160001a0,0x02400240, +0x00000001,0xa0000228,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000070, +0x00000041,0x20e42a28,0x1e000ad4,0x00050005,0x0c000038,0x20e00208,0x020006c0,0x000006c4, +0x00000040,0x21180a08,0x1e0000e4,0x005f005f,0x00000040,0x21200208,0x02000118,0x000006cc, +0x00000041,0x21401248,0x16000120,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x00000001,0xa0000228,0x000000e0,0x00000000,0x00000040,0x20e00208,0x160006cc,0x00010001, +0x00000040,0x211c2a28,0x1e000ad4,0x00150015,0x0d000038,0x21180208,0x060000e0,0x00000005, +0x00000041,0x21201248,0x1600011c,0x00040004,0x00000040,0x22001240,0x16000120,0x02400240, +0x00000001,0xa0000208,0x00000118,0x00000000,0x00000040,0x20e02a28,0x1e000ad4,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0x29402268,0x00008000,0x00000000, +0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00000001,0x26c01628,0x00000000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000980,0x06000010,0x20000a20,0x1e00026c,0x00000000, +0x00000001,0x45121e88,0x00000000,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000370, +0x00000001,0x26c01e28,0x00000000,0x00040004,0x00000001,0x26c41e28,0x00000000,0x00030003, +0x00000040,0x20e00a28,0x1e0006c4,0x003e003e,0x0000000c,0x26c00a28,0x1e0006c0,0x00010001, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x26c40a28,0x0a0006c4,0x000006c0,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x26c40a28,0x0a0006c4,0x000046c0,0x03000010,0x20000a20,0x1e0006c0,0x00000000, +0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e0006c4,0x003e003e, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000040,0x20e00a28,0x1e0006c4,0x003e003e, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000001,0x220c0a28,0x000006c4,0x00000000, +0x00000001,0x26c01e28,0x00000000,0x00020002,0x00000001,0x26c41e28,0x00000000,0x00010001, +0x00000040,0x20e00a28,0x1e0006c4,0x00560056,0x0000000c,0x26c00a28,0x1e0006c0,0x00010001, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0x21200ae8,0x00008000,0x00000000,0x04000010,0x20003ae0,0x3a000120,0x0000021c, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x26c40a28,0x0a0006c4,0x000006c0, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x26c40a28,0x0a0006c4,0x000046c0, +0x03000010,0x20000a20,0x1e0006c0,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff40, +0x00000040,0x20e00a28,0x1e0006c4,0x00560056,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22001240,0x16000118,0x02400240,0x00000001,0x21200ae8,0x00008000,0x00000000, +0x04000010,0x20003ae0,0x3a000120,0x0000021c,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x26c40a28,0x1e0006c4,0x00010001,0x00000040,0x20e00a28,0x1e0006c4,0x00560056, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0x21200ae8,0x00008000,0x00000000,0x04000010,0x20003ae0,0x3a000120,0x0000021c, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x26c40a28,0x1e0006c4,0x00010001, +0x00000001,0x22080a28,0x000006c4,0x00000000,0x06000010,0x20002260,0x1e000ac0,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22081e28,0x00000000,0x00020002, +0x00000041,0x20e00a28,0x1e00020c,0x00050005,0x00000040,0x21180a28,0x1e0000e0,0x00330033, +0x00000040,0x21200a28,0x0a000118,0x00000208,0x00000040,0x22001240,0x16000120,0x05400540, +0x00000040,0x29402268,0x2a00050b,0x00008000,0x06000010,0x20000200,0x16000214,0x00000000, +0x00000001,0x26c01e28,0x00000000,0x00080008,0x00010020,0x34000004,0x0e001400,0x000001c0, +0x00000001,0x22081e28,0x00000000,0x00030003,0x00000001,0x21101e28,0x00000000,0x00040004, +0x00000040,0x20e00a28,0x1e000208,0x001f001f,0x0000000c,0x21100a28,0x1e000110,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22080a28,0x0a000208,0x00000110, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22080a28,0x0a000208,0x00004110, +0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60, +0x00000040,0x20e00a28,0x1e000208,0x001f001f,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002200,0x02008000,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x20e00a28,0x1e000208,0x001f001f, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22080a28,0x1e000208,0x00010001, +0x00000041,0x20e00a28,0x1e00020c,0x00090009,0x00000001,0x26c00a28,0x00000208,0x00000000, +0x00000040,0x21180a28,0x1e0000e0,0x008d008d,0x00000040,0x21200a28,0x0a000118,0x00000208, +0x00000040,0x22001240,0x16000120,0x05400540,0x00000040,0x29401a68,0x2a000940,0x00008000, +0x05000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000350, +0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x22083ae8,0x3e000218,0x3e2aaaab, +0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f99999a, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f99999a, +0x00000020,0x34000004,0x0e001400,0x000000f0,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a, +0x00000020,0x34000004,0x0e001400,0x000000d0,0x03000010,0x20000a20,0x1e00020c,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f800000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f800000, +0x00000020,0x34000004,0x0e001400,0x00000070,0x05000002,0x22083ae8,0x3e000208,0x3fc00000, +0x00000020,0x34000004,0x0e001400,0x00000050,0x04000010,0x20003ae0,0x3e000208,0x3e99999a, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3e99999a, +0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x22083ae8,0x3e000208,0x3fa66666, +0x00000001,0x20e022e8,0x0000050f,0x00000000,0x00000040,0x20e43ae8,0x3e004208,0x3f800000, +0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x21183ae8,0x3a0000e0,0x000000e4, +0x09000038,0x21203ae8,0x3e000118,0x42fa0000,0x00000040,0x21403ae8,0x3a000120,0x00000208, +0x00000041,0x21603ae8,0x3a000140,0x000000e0,0x00000001,0x49403a68,0x00000160,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x29401a68,0x1e000940,0x00060006, +0x00000020,0x34000004,0x0e001400,0x00000070,0x03000010,0x20000a20,0x1e00020c,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x29401a68,0x1e000940,0x00040004, +0x00000020,0x34000004,0x0e001400,0x00000030,0x03000010,0x20000a20,0x1e00020c,0x00030003, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x29401a68,0x1e000940,0x00020002, +0x05000002,0x20e01a28,0x1e000940,0x00f000f0,0x06000010,0x20002260,0x1e000ac0,0x00010001, +0x04000002,0x49400a68,0x1e0000e0,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000040,0x20e01a28,0x1e000940,0x00040004,0x04000010,0x20002220,0x0a000509,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000060,0x00000040,0x45091a88,0x1e000940,0x00040004, +0x00000020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e01a28,0x1e000940,0x000c000c, +0x04000010,0x20002220,0x0a000509,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x45091a88,0x1e000940,0x000c000c,0x02000010,0x20002a60,0x1e000ad4,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000880,0x06000010,0x20002260,0x1e000ac0,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000070,0x06000010,0x20002260,0x1e000768,0x00000000, +0x00000001,0x29402268,0x00000509,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000070, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0x29402268,0x00008000,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000040,0x20e02a28,0x1e000ac2,0x00010001,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0x29402268,0x00008000,0x00000000,0x06000010,0x20000200,0x16000214,0x00000000, +0x00000001,0x26c01e28,0x00000000,0x00080008,0x00010020,0x34000004,0x0e001400,0x00000420, +0x00000001,0x220c1e28,0x00000000,0x00040004,0x00000001,0x22081e28,0x00000000,0x00030003, +0x00000040,0x20e00a28,0x1e000208,0x002a002a,0x0000000c,0x220c0a28,0x1e00020c,0x00010001, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x22080a28,0x0a000208,0x0000020c,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22080a28,0x0a000208,0x0000420c,0x03000010,0x20000a20,0x1e00020c,0x00000000, +0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e000208,0x002a002a, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x20e00a28,0x1e000208,0x002a002a, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x04000010,0x20000a20,0x0a008000,0x00000210,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000001,0x220c0a28,0x00000208,0x00000000, +0x00000001,0x22101e28,0x00000000,0x00030003,0x00000001,0x21101e28,0x00000000,0x00040004, +0x00000040,0x20e00a28,0x1e000210,0x00270027,0x0000000c,0x21100a28,0x1e000110,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x22100a28,0x0a000210,0x00000110, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22100a28,0x0a000210,0x00004110, +0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60, +0x00000040,0x20e00a28,0x1e000210,0x00270027,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002200,0x02008000,0x000006c8,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22100a28,0x1e000210,0x00010001,0x00000040,0x20e00a28,0x1e000210,0x00270027, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002200,0x02008000,0x000006c8, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x22100a28,0x1e000210,0x00010001, +0x00000041,0x20e00a28,0x1e000208,0x00090009,0x00000001,0x26c00a28,0x00000210,0x00000000, +0x00000040,0x21180a28,0x1e0000e0,0x00de00de,0x00000040,0x21200a28,0x0a000118,0x00000210, +0x00000040,0x22001240,0x16000120,0x05400540,0x00000040,0x29401a68,0x2a000940,0x00008000, +0x00000040,0x29401a68,0x2a000940,0x00008000,0x00000040,0x21102268,0x2a00050b,0x00008000, +0x00000001,0x21400a28,0x00000120,0x00000000,0x04000002,0x21101268,0x1a0004e6,0x00000110, +0x00000040,0x22001240,0x16000140,0x05400540,0x05000002,0x450b1288,0x1a0004e8,0x00000110, +0x00000040,0x21102268,0x2a000511,0x00008000,0x04000002,0x21101268,0x1a0004e6,0x00000110, +0x06000010,0x20001a40,0x12000110,0x000004e8,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x21101268,0x000004e8,0x00000000,0x00000001,0x45111a88,0x00000110,0x00000000, +0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000020, +0x02000010,0x20002260,0x1e000ad6,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000330, +0x03000010,0x20000a20,0x1e00020c,0x00010001,0x00000041,0x22083ae8,0x3e000218,0x3e4ccccd, +0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f99999a, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f99999a, +0x00000020,0x34000004,0x0e001400,0x000000f0,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a, +0x00000020,0x34000004,0x0e001400,0x000000d0,0x03000010,0x20000a20,0x1e00020c,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000060,0x04000010,0x20003ae0,0x3e000208,0x3f8ccccd, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f8ccccd, +0x00000020,0x34000004,0x0e001400,0x00000070,0x05000002,0x22083ae8,0x3e000208,0x3fc00000, +0x00000020,0x34000004,0x0e001400,0x00000050,0x04000010,0x20003ae0,0x3e000208,0x3f000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f000000, +0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x22083ae8,0x3e000208,0x3fd9999a, +0x00000001,0x20e022e8,0x0000050d,0x00000000,0x00000040,0x20e43ae8,0x3e004208,0x3f800000, +0x06000010,0x20002260,0x1e00050f,0x000a000a,0x00000041,0x21183ae8,0x3a0000e0,0x000000e4, +0x09000038,0x21203ae8,0x3e000118,0x42fa0000,0x00000040,0x22083ae8,0x3a000120,0x00000208, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e00020c,0x00070007, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f59999a, +0x00000020,0x34000004,0x0e001400,0x00000070,0x06000010,0x20000a20,0x1e00020c,0x00060006, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x22083ee8,0x00000000,0x3f666666, +0x00000020,0x34000004,0x0e001400,0x00000030,0x05000010,0x20000a20,0x1e00020c,0x00040004, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x22083ee8,0x00000000,0x3f733333, +0x00000001,0x20e022e8,0x0000050f,0x00000000,0x00000040,0x21800208,0x1e000ad8,0xffffffff, +0x00000001,0x45121e88,0x00000000,0x00010001,0x00000041,0x21183ae8,0x3a000208,0x000000e0, +0x00000040,0x22800208,0x12000180,0x000044fa,0x00000001,0x41203a68,0x00000118,0x00000000, +0x04000002,0x21401a68,0x1a000120,0x00000940,0x05000002,0x21601a28,0x1e000140,0x00fa00fa, +0x04000002,0x49400a68,0x1e000160,0x00020002,0x00000001,0x450b1a88,0x00000940,0x00000000, +0x00000040,0x45111a88,0x1e000940,0x00040004,0x00000040,0x20e00208,0x1600027c,0x00010001, +0x00000040,0x21200208,0x16000278,0x00010001,0x00000001,0x220c1e28,0x00000000,0x00010001, +0x00000001,0x21101e28,0x00000000,0x00020002,0x00000001,0x211802e8,0x000000e0,0x00000000, +0x00000001,0x214002e8,0x00000120,0x00000000,0x00000041,0x22103ae8,0x3e000118,0x42c80000, +0x09000038,0x22103ae8,0x3a000210,0x00000140,0x00000001,0x22083a28,0x00000210,0x00000000, +0x00000041,0x20e01248,0x1600020c,0x00020002,0x0000000c,0x21100a28,0x1e000110,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20001200,0x02008000,0x00000ad8, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x220c0a28,0x0a00020c,0x00000110, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x0a00020c,0x00004110, +0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60, +0x00000041,0x20e01248,0x1600020c,0x00020002,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20001200,0x02008000,0x00000ad8,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x220c0a28,0x1e00020c,0x00010001,0x00000041,0x20e01248,0x1600020c,0x00020002, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20001200,0x02008000,0x00000ad8, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x1e00020c,0x00010001, +0x00000040,0x20e00a28,0x1e00020c,0x00150015,0x00000040,0x22080a28,0x1e000208,0xff9cff9c, +0x00000040,0x22001240,0x160000e0,0x05400540,0x00000041,0x22080a28,0x2a000208,0x00008000, +0x00000001,0x21182a28,0x00008005,0x00000000,0x00000040,0x2ad80208,0x16000ad8,0x00010001, +0x0c000038,0x21200a28,0x0a000208,0x00000118,0x00000040,0x24080208,0x16000408,0x00010001, +0x0d000038,0x21400208,0x06000ad8,0x000000ff,0x00000040,0x22080a28,0x1e000120,0x00640064, +0x02000010,0x20000200,0x16000140,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000040, +0x06000010,0x20000200,0x16000ad8,0x00ff00ff,0x00010020,0x34000004,0x0e001400,0x00000020, +0x0000000c,0x227c0a08,0x1e00027c,0x00010001,0x0000000c,0x22780a08,0x1e000278,0x00010001, +0x00000001,0x220c1e28,0x00000000,0x00020002,0x00000001,0x21101e28,0x00000000,0x00030003, +0x00000040,0x20e00a28,0x1e00020c,0x00080008,0x0000000c,0x21100a28,0x1e000110,0x00010001, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002220,0x0a008000,0x00000208, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000040,0x220c0a28,0x0a00020c,0x00000110, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x0a00020c,0x00004110, +0x03000010,0x20000a20,0x1e000110,0x00000000,0x00010020,0x34000004,0x0e001400,0xffffff60, +0x00000040,0x20e00a28,0x1e00020c,0x00080008,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002220,0x0a008000,0x00000208,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x220c0a28,0x1e00020c,0x00010001,0x00000040,0x20e00a28,0x1e00020c,0x00080008, +0x00000040,0x22001240,0x160000e0,0x05400540,0x04000010,0x20002220,0x0a008000,0x00000208, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x220c0a28,0x1e00020c,0x00010001, +0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000210, +0x00000040,0x20e00a28,0x1e00020c,0x000e000e,0x00000040,0x22001240,0x160000e0,0x05400540, +0x00000041,0x21182a28,0x1e008000,0x00020002,0x00000040,0x49401a68,0x0a000940,0x00000118, +0x06000010,0x20002a20,0x1e008000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040, +0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x29401a68,0x1e000940,0x00040004,0x00000020,0x34000004,0x0e001400,0x00000170, +0x04000010,0x20000a20,0x1e0006c0,0x00070007,0x00010020,0x34000004,0x0e001400,0x00000150, +0x06000010,0x20000200,0x16000ad8,0x00640064,0x00010020,0x34000004,0x0e001400,0x00000040, +0x04000010,0x20000a20,0x1e000208,0x00620062,0x00010020,0x34000004,0x0e001400,0x00000020, +0x03000010,0x20001a60,0x1e000940,0x00140014,0x00010020,0x34000004,0x0e001400,0x000000c0, +0x06000010,0x20000200,0x16000ad8,0x00c800c8,0x00010020,0x34000004,0x0e001400,0x00000040, +0x04000010,0x20000a20,0x1e000208,0x00600060,0x00010020,0x34000004,0x0e001400,0x00000020, +0x03000010,0x20001a60,0x1e000940,0x000c000c,0x00010020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20000200,0x16000ad8,0x00c800c8,0x00010020,0x34000004,0x0e001400,0x00000070, +0x04000010,0x20000a20,0x1e000208,0x005a005a,0x00010020,0x34000004,0x0e001400,0x00000050, +0x06000010,0x20001a60,0x1e000940,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000030, +0x06000010,0x20001a60,0x1e000940,0x00040004,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x29401a68,0x1e000940,0xfffcfffc,0x06000010,0x20002260,0x1e000ac0,0x00010001, +0x00010020,0x34000004,0x0e001400,0x00000290,0x04000010,0x20000a20,0x1e000208,0x00640064, +0x00000001,0x45162288,0x00000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x20e00a28,0x1e004208,0x00640064,0x0c000038,0x21180a28,0x0e0000e0,0x00000002, +0x05000002,0x220c0a28,0x1e000118,0x00050005,0x06000010,0x20002220,0x0a000509,0x0000020c, +0x00010020,0x34000004,0x0e001400,0x000001b0,0x00000040,0x40e01a68,0x0a000940,0x0000420c, +0x02000010,0x20002260,0x1e000768,0x00000000,0x05000002,0x21181a28,0x1e0000e0,0x00ff00ff, +0x04000002,0x49400a68,0x1e000118,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x65092288,0x0a000509,0x0000420c,0x00000020,0x34000004,0x0e001400,0x00000140, +0x00000040,0x20e02228,0x1e000768,0x00100010,0x00000040,0x22001240,0x160000e0,0x05080508, +0x00000001,0xc0001a88,0x00000940,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x02000010,0x20002260,0x1e000768,0x00000000, +0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x05000002,0x220c0a28,0x1e000118,0x00050005, +0x00000040,0x41201a68,0x0a000940,0x0000020c,0x05000002,0x21401a28,0x1e000120,0x00ff00ff, +0x04000002,0x49400a68,0x1e000140,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x0c000038,0x20e00a28,0x0e00020c,0x00000003,0x00000040,0x41182268,0x0a000509,0x000000e0, +0x05000002,0x21201a28,0x1e000118,0x00ff00ff,0x04000002,0x65090a88,0x1e000120,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e02228,0x1e000768,0x00100010, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x00000940,0x00000000, +0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x000003e0, +0x0000000c,0x20e01a28,0x1e000940,0x00050005,0x00000040,0x220c0a28,0x1e0000e0,0x000c000c, +0x00000040,0x49401a68,0x0a000940,0x0000420c,0x00000020,0x34000004,0x0e001400,0x000003a0, +0x00000040,0x20e00a08,0x1e000ac8,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000190,0x0000000c,0x20e01a28,0x1e000940,0x00020002, +0x0000000c,0x211c1a28,0x1e000940,0x00030003,0x00000040,0x21601a28,0x1e000940,0xffc4ffc4, +0x0000000c,0x21241a28,0x1e000940,0x00040004,0x04000010,0x20001a60,0x1e000940,0x00180018, +0x00000040,0x21180a28,0x1e0000e0,0x000c000c,0x04000002,0x21800a28,0x0a000160,0x00000adc, +0x00000040,0x21200a28,0x0a000118,0x0000011c,0x04000002,0x2adc0a28,0x1e000180,0x00280028, +0x00000040,0x21400a28,0x0a000120,0x00000124,0x05000002,0x220c0a28,0x1e000140,0x003c003c, +0x00010020,0x34000004,0x0e001400,0x00000030,0x0000000c,0x20e01a28,0x1e000940,0x00010001, +0x00000040,0x49401a68,0x0a000940,0x000040e0,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x49401a68,0x0a000940,0x0000420c,0x06000010,0x20000a20,0x1e000208,0x00640064, +0x05000002,0x49401a68,0x0a000940,0x00000adc,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x00000040,0x49401a68,0x0a000940,0x000000e0, +0x05000002,0x20e01a28,0x1e000940,0x00ff00ff,0x04000002,0x49400a68,0x1e0000e0,0x00010001, +0x00000001,0x45111a88,0x00000940,0x00000000,0x00000020,0x34000004,0x0e001400,0x000001e0, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000180,0x00000040,0x20e01a28,0x1e000940,0xffd8ffd8, +0x04000010,0x20000a20,0x0a000adc,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x2adc1a28,0x1e000940,0xffd8ffd8,0x00000020,0x34000004,0x0e001400,0x00000010, +0x04000002,0x2adc0a28,0x1e000adc,0x003c003c,0x04000010,0x20001a60,0x1e000940,0x00180018, +0x00010020,0x34000004,0x0e001400,0x00000030,0x0000000c,0x20e01a28,0x1e000940,0x00020002, +0x00000040,0x49401a68,0x0a000940,0x000040e0,0x00000020,0x34000004,0x0e001400,0x00000030, +0x0000000c,0x20e01a28,0x1e000940,0x00020002,0x00000040,0x21180a28,0x1e0000e0,0x00060006, +0x00000040,0x49401a68,0x0a000940,0x00004118,0x06000010,0x20000a20,0x1e000208,0x00640064, +0x05000002,0x49401a68,0x0a000940,0x00000adc,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e00a28,0x1e000208,0xff9cff9c,0x00000040,0x49401a68,0x0a000940,0x000000e0, +0x00000040,0x20e02228,0x1e000511,0x00100010,0x04000010,0x20001a20,0x0a000940,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000050,0x00000001,0x45121e88,0x00000000,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000030,0x02000010,0x20000200,0x16000ad8,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x45111a88,0x00000940,0x00000000, +0x06000010,0x20000a20,0x1e0002b8,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000030, +0x06000010,0x20001a60,0x1e000940,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x29401a68,0x1e000940,0xffffffff,0x02000010,0x20002260,0x1e000510,0x00030003, +0x00010020,0x34000004,0x0e001400,0x000000e0,0x00000040,0x20e00a08,0x1e000ac8,0x00020002, +0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000070, +0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x01000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x04000002,0x29401268,0x1a0004ea,0x00000940, +0x00000020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e01228,0x1e0004ea,0xffe0ffe0, +0x04000010,0x20001a20,0x0a000940,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x29401268,0x1e0004ea,0xffe0ffe0,0x00000040,0x20e02a28,0x1e000ad4,0x001a001a, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x0000000c,0x22080228,0x16008000,0x00030003,0x00000040,0x21202a28,0x1e000ad4,0x00010001, +0x00000040,0x22001240,0x16000120,0x05080508,0x00000001,0x22102228,0x00008000,0x00000000, +0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000070, +0x02000010,0x20002a60,0x1e000ac2,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000050, +0x06000010,0x20001a60,0x22000940,0x00000509,0x00010020,0x34000004,0x0e001400,0x00000030, +0x00000041,0x20e02228,0x1e000509,0x00030003,0x00000040,0x21181a28,0x0a000940,0x000000e0, +0x0000000c,0x49400a68,0x1e000118,0x00020002,0x04000002,0x29401268,0x1a0004e6,0x00000940, +0x00000001,0x220c1e28,0x00000000,0x00000000,0x00000001,0x21101e28,0x00000000,0x00000000, +0x05000002,0x29401268,0x1a0004e8,0x00000940,0x00000040,0x22001240,0x16000110,0x07600760, +0x00000040,0x40e02aa8,0x2a008000,0x00004760,0x00000040,0x21100a28,0x1e000110,0x00010001, +0x05000002,0x220c2a28,0x0a0000e0,0x0000020c,0x05000010,0x20000a20,0x1e000110,0x00080008, +0x00010020,0x34000004,0x0e001400,0xffffffa0,0x00000040,0x20e00a28,0x1a00020c,0x00000940, +0x04000010,0x20000a20,0x1a0000e0,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e01a28,0x0a00005c,0x0000420c,0x00000040,0x49401a68,0x0a000940,0x000000e0, +0x01000010,0x20000a20,0x1e000208,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000100, +0x01000010,0x20000a20,0x1e000210,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000e0, +0x04000002,0x29401a68,0x1e000940,0x00010001,0x00000041,0x20e00a28,0x0a000208,0x00000210, +0x0000000c,0x211c0a28,0x1e000204,0x00030003,0x0000000c,0x21200a28,0x1e0002b8,0x00030003, +0x00000001,0x20e41a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0a0000e0,0x000000e4, +0x05000002,0x22040a28,0x0a000118,0x0000011c,0x06000010,0x20000a20,0x0a000120,0x00000204, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21100a28,0x1e0002b8,0x00030003, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x21100a28,0x00000204,0x00000000, +0x00000001,0x22040a28,0x00000110,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x0000000c,0x22040a28,0x1e000260,0x00030003,0x00000040,0x20e00a08,0x1e000ac8,0x00020002, +0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001a0, +0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x00000180, +0x01000010,0x20002260,0x1e000512,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000160, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000080,0x01000010,0x20002260,0x1e000510,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00a08,0x1e000acc,0x00090009, +0x00000041,0x21100228,0x02000260,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x20e00a08,0x1e000acc,0x00060006,0x00000041,0x21100228,0x02000260,0x000000e0, +0x00000020,0x34000004,0x0e001400,0x000000d0,0x01000010,0x20002260,0x1e000510,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20000a20,0x1e000acc,0x00030003, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x21100228,0x16000ad0,0x00030003, +0x00000020,0x34000004,0x0e001400,0x00000070,0x00000009,0x21100228,0x16000ad0,0x00020002, +0x00000020,0x34000004,0x0e001400,0x00000050,0x0000000c,0x20e00208,0x16000ad0,0x00010001, +0x00000040,0x21100228,0x02000ad0,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e00a08,0x1e000acc,0x000a000a,0x00000041,0x21100228,0x02000260,0x000000e0, +0x0000000c,0x21100a28,0x1e000110,0x00030003,0x00000001,0x2148160c,0x00000000,0x000c000c, +0x00000001,0x2168160c,0x00000000,0x00180018,0x00000001,0x2188160c,0x00000000,0x00240024, +0x00000001,0x2128160c,0x00000000,0x00000000,0x00000040,0x22000204,0x06000100,0x02480400, +0x06000010,0x20000a20,0x0a000204,0x00000110,0x0a800031,0x28403a6c,0x00000140,0x00000200, +0x0a800031,0x26c03a6c,0x00000180,0x00000200,0x0a800031,0x27c03a6c,0x00000160,0x00000200, +0x0a800031,0x28c03a6c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000010, +0x0c000038,0x22040a28,0x0e000110,0x00000002,0x00000040,0x20e00a28,0x0a000110,0x00004204, +0x04000010,0x20000a20,0x1e0000e0,0x01000100,0x00010020,0x34000004,0x0e001400,0x000005a0, +0x00000041,0x20e00a28,0x0a000208,0x00000210,0x00000040,0x20e40a28,0x1e000204,0x00010001, +0x04000010,0x20001a60,0x1e000940,0x00300030,0x0c000038,0x21180a28,0x0a0000e0,0x000000e4, +0x00000040,0x21200a28,0x1a000118,0x00004940,0x0000000c,0x21400a28,0x1e002120,0x00010001, +0x05000002,0x22040a28,0x1e000140,0x003c003c,0x0000000c,0x21800a28,0x1e000204,0x00040004, +0x0000000c,0x21600a28,0x1e000204,0x00050005,0x0000000c,0x21c00a28,0x1e000204,0x00030003, +0x04000002,0x61a00a8c,0x1e000180,0x00040004,0x04000002,0x69180a88,0x1e000160,0x00030003, +0x04000002,0x691c0a88,0x1e0001c0,0x00060006,0x00000001,0x491a2288,0x000001a0,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000060,0x0000000c,0x20e00a28,0x1e000204,0x00020002, +0x04000002,0x60e40a8c,0x1e0000e0,0x00080008,0x04000002,0x61180a8c,0x1e0000e0,0x00070007, +0x00000001,0x491e2288,0x000000e4,0x00000000,0x00000001,0x489e2288,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000070,0x0000000c,0x20e00a28,0x1e000204,0x00020002, +0x04000002,0x20e40a28,0x1e0000e0,0x00080008,0x04000002,0x21200a28,0x1e0000e0,0x00070007, +0x05000002,0x61180a8c,0x1e0000e4,0x000c000c,0x05000002,0x61400a8c,0x1e000120,0x000c000c, +0x00000001,0x491e2288,0x00000118,0x00000000,0x00000001,0x489e2288,0x00000140,0x00000000, +0x00000040,0x21202228,0x2200091a,0x0000091c,0x00000040,0x21802228,0x2200091c,0x0000091e, +0x00000040,0x20e02228,0x22000918,0x0000091a,0x06000010,0x20002260,0x1e00076c,0x00010001, +0x00000040,0x491f2288,0x1e00091e,0x00010001,0x0c000038,0x21400a28,0x0e000120,0x00000002, +0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21180a28,0x0e0000e0,0x00000002, +0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x691d0a88,0x000001a0,0x00000000, +0x00000001,0x69190a88,0x00000118,0x00000000,0x00000001,0x491b2288,0x00000160,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000940,0x0000000c,0x21180a28,0x1e000204,0x00040004, +0x0000000c,0x20e00a28,0x1e000204,0x00050005,0x0000000c,0x21400a28,0x1e000204,0x00030003, +0x00000001,0x481a1e88,0x00000000,0x00030003,0x00000001,0x481c1e88,0x00000000,0x00040004, +0x00000001,0x47181e88,0x00000000,0x00010001,0x00000001,0x48181e88,0x00000000,0x00020002, +0x04000002,0x61200a8c,0x1e000118,0x00040004,0x04000002,0x68980a88,0x1e0000e0,0x00030003, +0x04000002,0x689c0a88,0x1e000140,0x00050005,0x00000001,0x481e1e88,0x00000000,0x00060006, +0x00000040,0x489f2288,0x1e00089e,0x00010001,0x00000001,0x471a2288,0x00000718,0x00000000, +0x00000001,0x471c2288,0x00000818,0x00000000,0x00000001,0x489a2288,0x00000120,0x00000000, +0x00000040,0x21202228,0x22000818,0x0000081a,0x00000040,0x20e02228,0x2200089c,0x0000089e, +0x00000001,0x471e2288,0x00000818,0x00000000,0x00000040,0x481f2288,0x1e00081e,0x00010001, +0x00000040,0x21602228,0x22000898,0x0000089a,0x00000040,0x21a02228,0x2200089a,0x0000089c, +0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x0c000038,0x21400a28,0x0e000120,0x00000002, +0x00000040,0x21202228,0x22000718,0x0000071a,0x0c000038,0x21800a28,0x0e000160,0x00000002, +0x00000040,0x21602228,0x2200081a,0x0000081c,0x0c000038,0x21c00a28,0x0e0001a0,0x00000002, +0x00000040,0x471f2288,0x1e00071e,0x00010001,0x00000001,0x689d0a88,0x00000118,0x00000000, +0x00000040,0x21182228,0x2200081c,0x0000081e,0x00000001,0x68190a88,0x00000140,0x00000000, +0x0c000038,0x21400a28,0x0e000120,0x00000002,0x00000001,0x68990a88,0x00000180,0x00000000, +0x0c000038,0x21800a28,0x0e000160,0x00000002,0x0c000038,0x21a00a28,0x0e000118,0x00000002, +0x00000001,0x61e00a8c,0x000001c0,0x00000000,0x00000001,0x67190a88,0x00000140,0x00000000, +0x00000001,0x60e00a8c,0x00000180,0x00000000,0x00000040,0x21802228,0x2200071c,0x0000071e, +0x00000001,0x681d0a88,0x000001a0,0x00000000,0x00000001,0x489b2288,0x000001e0,0x00000000, +0x00000001,0x481b2288,0x000000e0,0x00000000,0x00000040,0x20e02228,0x2200071a,0x0000071c, +0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21600a28,0x0e0000e0,0x00000002, +0x00000001,0x671d0a88,0x000001a0,0x00000000,0x00000001,0x61180a8c,0x00000160,0x00000000, +0x00000001,0x471b2288,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000630, +0x00000001,0x22081e28,0x00000000,0x00020002,0x00000001,0x22041e28,0x00000000,0x00010001, +0x00000040,0x20e00a28,0x1e000204,0x002f002f,0x00000001,0x41181a88,0x00000940,0x00000000, +0x0000000c,0x22080a28,0x1e000208,0x00010001,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x22040a28,0x0a000204,0x00000208,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22040a28,0x0a000204,0x00004208,0x03000010,0x20000a20,0x1e000208,0x00000000, +0x00010020,0x34000004,0x0e001400,0xffffff50,0x00000040,0x20e00a28,0x1e000204,0x002f002f, +0x00000001,0x41181a88,0x00000940,0x00000000,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22040a28,0x1e000204,0x00010001,0x00000040,0x20e00a28,0x1e000204,0x002f002f, +0x00000001,0x41181a88,0x00000940,0x00000000,0x00000040,0x22001240,0x160000e0,0x05400540, +0x04000010,0x20002220,0x22008000,0x00000118,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x22040a28,0x1e000204,0x00010001,0x00000040,0x60e00a8c,0x1e000204,0x00050005, +0x04000010,0x20001a60,0x1e000940,0x00310031,0x00000040,0x691c0a88,0x1e000204,0x00080008, +0x00000001,0x49181e88,0x00000000,0x00030003,0x00000001,0x491a2288,0x000000e0,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000050,0x00000040,0x61180a8c,0x1e000204,0x00090009, +0x00000040,0x60e00a8c,0x1e000204,0x000a000a,0x00000001,0x489e2288,0x00000118,0x00000000, +0x00000001,0x491e2288,0x000000e0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x00000040,0x21200a28,0x1e000204,0x00090009,0x00000040,0x20e00a28,0x1e000204,0x000a000a, +0x05000002,0x61400a8c,0x1e000120,0x000c000c,0x05000002,0x61180a8c,0x1e0000e0,0x000c000c, +0x00000001,0x489e2288,0x00000140,0x00000000,0x00000001,0x491e2288,0x00000118,0x00000000, +0x00000040,0x21202228,0x2200091a,0x0000091c,0x00000040,0x21802228,0x2200091c,0x0000091e, +0x00000040,0x20e02228,0x22000918,0x0000091a,0x06000010,0x20002260,0x1e00076c,0x00010001, +0x00000040,0x491f2288,0x1e00091e,0x00010001,0x0c000038,0x21400a28,0x0e000120,0x00000002, +0x0c000038,0x21a00a28,0x0e000180,0x00000002,0x0c000038,0x21180a28,0x0e0000e0,0x00000002, +0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x691d0a88,0x000001a0,0x00000000, +0x00000001,0x69190a88,0x00000118,0x00000000,0x00000001,0x491b2288,0x00000160,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000002c0,0x00000040,0x60e00a8c,0x1e000204,0x00040004, +0x00000001,0x48981e88,0x00000000,0x00030003,0x00000040,0x689c0a88,0x1e000204,0x00070007, +0x00000040,0x681c0a88,0x1e000204,0x00060006,0x00000001,0x471c1e88,0x00000000,0x00040004, +0x00000001,0x471e1e88,0x00000000,0x00060006,0x00000001,0x47181e88,0x00000000,0x00020002, +0x00000001,0x489a2288,0x000000e0,0x00000000,0x00000040,0x60e00a8c,0x1e000204,0x00080008, +0x00000001,0x471a2288,0x00000898,0x00000000,0x00000040,0x21a02228,0x2200089c,0x0000089e, +0x00000040,0x489f2288,0x1e00089e,0x00010001,0x00000001,0x48182288,0x00000898,0x00000000, +0x00000040,0x471f2288,0x1e00071e,0x00010001,0x00000040,0x21402228,0x2200089a,0x0000089c, +0x00000040,0x21182228,0x22000898,0x0000089a,0x00000001,0x481a2288,0x0000089a,0x00000000, +0x00000001,0x481e2288,0x000000e0,0x00000000,0x00000040,0x20e02228,0x22000718,0x0000071a, +0x0c000038,0x21c00a28,0x0e0001a0,0x00000002,0x0c000038,0x21600a28,0x0e000140,0x00000002, +0x0c000038,0x21200a28,0x0e000118,0x00000002,0x00000040,0x21182228,0x2200081a,0x0000081c, +0x00000040,0x481f2288,0x1e00081e,0x00010001,0x00000001,0x689d0a88,0x000001c0,0x00000000, +0x00000001,0x61800a8c,0x00000160,0x00000000,0x00000040,0x21602228,0x2200081c,0x0000081e, +0x00000001,0x68990a88,0x00000120,0x00000000,0x0c000038,0x21200a28,0x0e000118,0x00000002, +0x0c000038,0x21180a28,0x0e0000e0,0x00000002,0x00000001,0x489b2288,0x00000180,0x00000000, +0x0c000038,0x21800a28,0x0e000160,0x00000002,0x00000001,0x48192288,0x00000899,0x00000000, +0x00000001,0x61400a8c,0x00000120,0x00000000,0x00000040,0x21202228,0x2200071a,0x0000071c, +0x00000001,0x67190a88,0x00000118,0x00000000,0x00000001,0x681d0a88,0x00000180,0x00000000, +0x00000040,0x21802228,0x2200071c,0x0000071e,0x00000001,0x481b2288,0x00000140,0x00000000, +0x0c000038,0x21400a28,0x0e000120,0x00000002,0x0c000038,0x21a00a28,0x0e000180,0x00000002, +0x00000001,0x61600a8c,0x00000140,0x00000000,0x00000001,0x671d0a88,0x000001a0,0x00000000, +0x00000001,0x471b2288,0x00000160,0x00000000,0x02000010,0x20002260,0x1e000510,0x00000000, +0x00000001,0x22101e28,0x00000000,0x00000000,0x00000001,0x22140228,0x0000043c,0x00000000, +0x00000001,0x22040228,0x000004c0,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000340, +0x00000040,0x20e00a08,0x1e000204,0x00020002,0x00000041,0x22100228,0x16000260,0x000c000c, +0x04000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000060, +0x00000040,0x20e00208,0x16000ad8,0x00800080,0x00000040,0x24400208,0x02000440,0x00000200, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0xa0000208,0x00000200,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000150, +0x00000040,0x24400208,0x02000440,0x00004448,0x06000040,0x20000a20,0x1e000204,0xffffffff, +0x00000001,0x22081e28,0x00000000,0x00000000,0x00000040,0x24400208,0x02000440,0x00000200, +0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000040,0x20e00a28,0x1e000208,0x00830083, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0x21200208,0x00008000,0x00000000,0x00000040,0x21240a28,0x1e000208,0x00820082, +0x00000041,0x21401248,0x16000124,0x00040004,0x00000040,0x22001240,0x16000140,0x02400240, +0x00000001,0xa0000208,0x00000120,0x00000000,0x00000040,0x22080a28,0x1e000208,0x00010001, +0x00000040,0x21600a28,0x1e000204,0xffffffff,0x05000010,0x20000a20,0x0a000208,0x00000160, +0x00010020,0x34000004,0x0e001400,0xffffff40,0x00000040,0x20e00a28,0x1e000208,0x00820082, +0x00000041,0x21181248,0x160000e0,0x00040004,0x00000040,0x22001240,0x16000118,0x02400240, +0x00000001,0xa0000208,0x00000200,0x00000000,0x00000040,0x20e00a08,0x1e000204,0x00010001, +0x05000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000120, +0x00000040,0x22100228,0x02000440,0x00004444,0x03000010,0x20001a60,0x1e000940,0x00040004, +0x00000041,0x20e00a28,0x1e000210,0x00040004,0x0c000038,0x21180a28,0x0a0000e0,0x00000260, +0x04000002,0x21200a28,0x1e000118,0xfffcfffc,0x05000002,0x21100a28,0x1e000120,0x00040004, +0x00010020,0x34000004,0x0e001400,0x00000020,0x05000010,0x20000a20,0x1e000110,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000040,0x49401a68,0x0a000940,0x00000110, +0x00000040,0x20e00a08,0x0a000214,0x00004210,0x0000000c,0x21180228,0x16000260,0x00010001, +0x00000040,0x22100228,0x020000e0,0x00000448,0x04000010,0x20000a20,0x0a000210,0x00000118, +0x00010020,0x34000004,0x0e001400,0x00000010,0x0000000c,0x22100228,0x16000260,0x00010001, +0x04000002,0x29401268,0x1a0004e6,0x00000940,0x05000002,0x29401268,0x1a0004e8,0x00000940, +0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e01208,0x160004dc,0x00010001, +0x00000040,0x22ac0208,0x020002ac,0x000000e0,0x00000040,0x20e00a08,0x1e000ac8,0x00020002, +0x01000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x000001f0, +0x01000010,0x20002a60,0x1e000ad4,0x00020002,0x00010020,0x34000004,0x0e001400,0x000001d0, +0x01000010,0x20002260,0x1e000512,0x00010001,0x00010020,0x34000004,0x0e001400,0x000001b0, +0x00000040,0x20e00a08,0x1e000ac4,0x00020002,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000080,0x01000010,0x20002260,0x1e000510,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000030,0x00000040,0x20e00a08,0x1e000acc,0x00090009, +0x00000041,0x21100208,0x02000260,0x000000e0,0x00000020,0x34000004,0x0e001400,0x00000190, +0x00000040,0x20e00a08,0x1e000acc,0x00060006,0x00000041,0x21100208,0x02000260,0x000000e0, +0x00000020,0x34000004,0x0e001400,0x00000160,0x01000010,0x20002260,0x1e000510,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000b0,0x06000010,0x20000a20,0x1e000acc,0x00030003, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x21100208,0x16000ad0,0x00030003, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000009,0x21100208,0x16000ad0,0x00020002, +0x06000010,0x20002260,0x1e000ac0,0x00010001,0x00010020,0x34000004,0x0e001400,0x000000d0, +0x02000010,0x20002260,0x1e000768,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000b0, +0x00000040,0x21100208,0x02000110,0x00000110,0x00000020,0x34000004,0x0e001400,0x00000090, +0x0000000c,0x20e00208,0x16000ad0,0x00010001,0x00000040,0x21100208,0x02000ad0,0x000000e0, +0x00000020,0x34000004,0x0e001400,0x00000060,0x00000040,0x20e00a08,0x1e000acc,0x00090009, +0x02000010,0x20002a60,0x1e000ad4,0x00020002,0x00000041,0x21100208,0x02000260,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000009,0x20e00208,0x16000260,0x00020002, +0x00000040,0x21100208,0x02000110,0x000000e0,0x02000010,0x20002260,0x1e000510,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000040,0x20e00a08,0x1e000204,0x00010001, +0x05000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x21100a08,0x00000210,0x00000000,0x0000000c,0x22040208,0x16000110,0x00080008, +0x00000001,0x42021e88,0x00000000,0x00000000,0x06000010,0x20000200,0x16000204,0x007f007f, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x22040a08,0x1e000204,0x00070007, +0x00000001,0x42021e88,0x00000000,0x00010001,0x00000001,0x21201ae8,0x00000940,0x00000000, +0x00000005,0x20e42228,0x1e000202,0x00010001,0x00000005,0x20e00208,0x16000204,0x3fff3fff, +0x00000001,0x29141608,0x00000000,0x00000000,0x04000010,0x20002260,0x1e00002b,0x00020002, +0x0000000c,0x42001a88,0x1e000940,0x00010001,0x00000001,0x48f61a88,0x00000940,0x00000000, +0x00000041,0x21243ae8,0x3e000120,0x3ecb1d56,0x00000040,0x21443ae8,0x3e000120,0xc2ff0000, +0x00000009,0x21180a08,0x1e0000e4,0x001f001f,0x00000001,0x29200208,0x00000914,0x00000000, +0x00000040,0x21403ae8,0x3e000124,0xc197e502,0x00000041,0x21643ae8,0x3e000144,0x37229ad3, +0x00000041,0x21483ae8,0x3e000144,0x3a047cd2,0x00000006,0x29100208,0x020000e0,0x00000118, +0x00000041,0x21803ae8,0x3a000164,0x00000144,0x0040015b,0x0b020000,0x7920a1c9,0x02972414, +0x0040015b,0x0d020400,0x7920b1c9,0x03072414,0x00000001,0x20e03a28,0x000001a0,0x00000000, +0x00000001,0x42040a68,0x000000e0,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000a0, +0x02000010,0x20002260,0x1e00002b,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000040, +0x05000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x42001a88,0x00000204,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004, +0x00000001,0x62000a88,0x00000118,0x00000000,0x05000002,0x42002288,0x1e000200,0x003f003f, +0x04000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004, +0x00000001,0x42040a68,0x00000118,0x00000000,0x00000009,0x20e02228,0x1e000200,0x00010001, +0x05000002,0x22041a68,0x1e000204,0x003f003f,0x00000001,0x22081e28,0x00000000,0x00000000, +0x00000006,0x6118228c,0x0a0008ca,0x000000e0,0x00000001,0x48ca2288,0x00000118,0x00000000, +0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x08c008c0, +0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000, +0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000, +0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000, +0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3, +0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c, +0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411, +0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000, +0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064, +0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x08c008c0, +0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008, +0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x292c1608,0x00000000,0x00000000, +0x00000001,0x2128160c,0x00000000,0x00000000,0x00000001,0x49371e88,0x00000000,0x001c001c, +0x00000001,0x49301e88,0x00000000,0x00000000,0x00000001,0x49361e88,0x00000000,0x00180018, +0x00000001,0x49351e88,0x00000000,0x00140014,0x00000001,0x49341e88,0x00000000,0x00100010, +0x00000001,0x49331e88,0x00000000,0x000c000c,0x00000001,0x49321e88,0x00000000,0x00080008, +0x00000001,0x49311e88,0x00000000,0x00040004,0x00000040,0x22000204,0x06000104,0x020a0400, +0x00000001,0x29380208,0x0000092c,0x00000000,0x00000001,0x293c0208,0x0000092c,0x00000000, +0x00000001,0x2148160c,0x00000000,0x00080008,0x00000001,0x2168160c,0x00000000,0x00080008, +0x06000010,0x20002260,0x1e00076c,0x00010001,0x0a800033,0x00046054,0x00002124,0x00000000, +0x00000040,0x22000204,0x06000100,0x02280300,0x0a800031,0x21803a6c,0x00000140,0x00000200, +0x00000040,0x22000204,0x06000104,0x020a0300,0x0a800033,0x0000c054,0x00002162,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000910,0x00000009,0x20e02228,0x1e000200,0x00010001, +0x00200001,0x28900208,0x00450910,0x00000000,0x00000001,0x22081e28,0x00000000,0x00000000, +0x00000001,0x28a01608,0x00000000,0x00000000,0x00000001,0x48762288,0x000008f6,0x00000000, +0x00000006,0x6118228c,0x0a00084a,0x000000e0,0x00000001,0x484a2288,0x00000118,0x00000000, +0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x08400840, +0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000, +0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000, +0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000, +0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3, +0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c, +0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411, +0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000, +0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064, +0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x08400840, +0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008, +0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x2128160c,0x00000000,0x000c000c, +0x00400001,0x28ac0208,0x0069092c,0x00000000,0x00000001,0x28bc0208,0x0000093c,0x00000000, +0x00000040,0x22000204,0x06000104,0x020a0400,0x00000001,0x2148160c,0x00000000,0x00140014, +0x00000001,0x2168160c,0x00000000,0x00140014,0x06000010,0x20002260,0x1e00076c,0x00020002, +0x0a800033,0x00042054,0x00002124,0x00000000,0x00000040,0x22000204,0x06000100,0x02280300, +0x0a800031,0x21803a6c,0x00000140,0x00000200,0x00000040,0x22000204,0x06000104,0x020a0300, +0x0a800033,0x0000c054,0x00002162,0x00000000,0x00010020,0x34000004,0x0e001400,0x000002f0, +0x00000009,0x20e02228,0x1e000200,0x00010001,0x00200001,0x28100208,0x00450910,0x00000000, +0x00000001,0x22081e28,0x00000000,0x00000000,0x00000001,0x28201608,0x00000000,0x00000000, +0x00000001,0x47f62288,0x000008f6,0x00000000,0x00000006,0x6118228c,0x0a0007ca,0x000000e0, +0x00000001,0x47ca2288,0x00000118,0x00000000,0x00000040,0x20e00a28,0x1e000208,0x00580058, +0x00000040,0x22001240,0x160000e0,0x07c007c0,0x00000040,0x22101a68,0x22000940,0x00008000, +0x04000010,0x20001a60,0x1e000210,0x00280028,0x00010020,0x34000004,0x0e001400,0x00000040, +0x00000001,0x20e01a28,0x00000210,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004, +0x00000001,0x42100a68,0x00000118,0x00000000,0x00000020,0x34000004,0x0e001400,0x000000b0, +0x00000001,0x20e01ae8,0x00000210,0x00000000,0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56, +0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,0x00000040,0x21183ae8,0x3e0000e4,0xc197e502, +0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2, +0x00000041,0x21603ae8,0x3a000144,0x0000011c,0x0040015b,0x0a020000,0xf9208dc9,0x02472411, +0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,0x00000001,0x21a03a28,0x00000180,0x00000000, +0x00000001,0x42100a68,0x000001a0,0x00000000,0x05000002,0x22101a68,0x1e000210,0x003f003f, +0x00000040,0x20e40a28,0x1e000208,0x00640064,0x00000040,0x20e01a28,0x1a000210,0x00004204, +0x00000040,0x22001240,0x160000e4,0x07c007c0,0x00000001,0x61180a8c,0x000000e0,0x00000000, +0x00000001,0xc0002288,0x00000118,0x00000000,0x00000040,0x22080a28,0x1e000208,0x00010001, +0x05000010,0x20000a20,0x1e000208,0x00080008,0x00010020,0x34000004,0x0e001400,0xfffffe30, +0x00000001,0x2128160c,0x00000000,0x00180018,0x00000001,0x283c0208,0x0000093c,0x00000000, +0x00400001,0x282c0208,0x0069092c,0x00000000,0x00000040,0x22000204,0x06000104,0x020a0400, +0x00000001,0x2148160c,0x00000000,0x00200020,0x00000001,0x2168160c,0x00000000,0x00200020, +0x0a800033,0x0003e054,0x00002124,0x00000000,0x00000040,0x22000204,0x06000100,0x02280300, +0x0a800031,0x21803a6c,0x00000140,0x00000200,0x00000040,0x22000204,0x06000104,0x020a0300, +0x0a800033,0x0000c054,0x00002162,0x00000000,0x06000010,0x20002260,0x1e00076c,0x00030003, +0x00010020,0x34000004,0x0e001400,0x000002f0,0x00000009,0x20e02228,0x1e000200,0x00010001, +0x00200001,0x27100208,0x00450910,0x00000000,0x00000001,0x22081e28,0x00000000,0x00000000, +0x00000001,0x27201608,0x00000000,0x00000000,0x00000001,0x46f62288,0x000008f6,0x00000000, +0x00000006,0x6118228c,0x0a0006ca,0x000000e0,0x00000001,0x46ca2288,0x00000118,0x00000000, +0x00000040,0x20e00a28,0x1e000208,0x00580058,0x00000040,0x22001240,0x160000e0,0x06c006c0, +0x00000040,0x22101a68,0x22000940,0x00008000,0x04000010,0x20001a60,0x1e000210,0x00280028, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e01a28,0x00000210,0x00000000, +0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x42100a68,0x00000118,0x00000000, +0x00000020,0x34000004,0x0e001400,0x000000b0,0x00000001,0x20e01ae8,0x00000210,0x00000000, +0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000, +0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3, +0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c, +0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411, +0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x42100a68,0x000001a0,0x00000000, +0x05000002,0x22101a68,0x1e000210,0x003f003f,0x00000040,0x20e40a28,0x1e000208,0x00640064, +0x00000040,0x20e01a28,0x1a000210,0x00004204,0x00000040,0x22001240,0x160000e4,0x06c006c0, +0x00000001,0x61180a8c,0x000000e0,0x00000000,0x00000001,0xc0002288,0x00000118,0x00000000, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x05000010,0x20000a20,0x1e000208,0x00080008, +0x00010020,0x34000004,0x0e001400,0xfffffe30,0x00000001,0x2128160c,0x00000000,0x00240024, +0x00000001,0x273c0208,0x0000093c,0x00000000,0x00400001,0x272c0208,0x0069092c,0x00000000, +0x00000040,0x22000204,0x06000104,0x020a0400,0x00000001,0x2148160c,0x00000000,0x002c002c, +0x00000001,0x2168160c,0x00000000,0x002c002c,0x0a800033,0x00036054,0x00002124,0x00000000, +0x00000040,0x22000204,0x06000100,0x02280300,0x0a800031,0x21803a6c,0x00000140,0x00000200, +0x00000040,0x22000204,0x06000104,0x020a0300,0x0a800033,0x0000c054,0x00002162,0x00000000, +0x00000040,0x20e00a08,0x1e000ac8,0x00030003,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x01000010,0x20002260,0x1e00076d,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000a0,0x00000040,0x20e00a08,0x1e000ac8,0x00040004, +0x02000010,0x20000200,0x02000ad8,0x000000e0,0x00010020,0x34000004,0x0e001400,0x00000020, +0x01000010,0x20002260,0x1e00076d,0x00010001,0x00010020,0x34000004,0x0e001400,0x00000050, +0x00000040,0x20e00a08,0x1e000ac8,0x00050005,0x02000010,0x20000200,0x02000ad8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000040,0x02000010,0x20002260,0x1e00076d,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x20e01208,0x160004fa,0x00010001, +0x00000040,0x22800208,0x02000280,0x000000e0,0x00000040,0x20e00a28,0x1a00020c,0x00000940, +0x04000010,0x20000a20,0x1a0000e0,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x20e01a28,0x0a00005c,0x0000420c,0x00000040,0x49401a68,0x0a000940,0x000000e0, +0x03000010,0x20001a40,0x12000940,0x000004e6,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x24180208,0x16000418,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000030, +0x05000010,0x20001a40,0x12000940,0x000004e8,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x24140208,0x16000414,0x00010001,0x02000010,0x20001260,0x1e000500,0x00010001, +0x00000001,0x49571e88,0x00000000,0x00020002,0x00000001,0x21d00208,0x00000410,0x00000000, +0x00000001,0x49561e88,0x00000000,0x00050005,0x00000001,0x49531e88,0x00000000,0x00010001, +0x00000001,0x49551e88,0x00000000,0x00050005,0x00000001,0x49521e88,0x00000000,0x00030003, +0x00000001,0x49511e88,0x00000000,0x00040004,0x00000001,0x49501e88,0x00000000,0x00010001, +0x00000001,0x49541e88,0x00000000,0x00010001,0x00400001,0x21c01e08,0x00000000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000290,0x05000010,0x20000200,0x1200040c,0x000004fa, +0x00010020,0x34000004,0x0e001400,0x00000270,0x00000001,0x21000228,0x000002a0,0x00000000, +0x06000010,0x20000a20,0x0a000100,0x0000074c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000040,0x21d00208,0x1e000410,0xffffffff,0x00000020,0x34000004,0x0e001400,0x00000030, +0x04000010,0x20000a20,0x0a000100,0x00000750,0x00010020,0x34000004,0x0e001400,0x00000010, +0x00000040,0x21d00208,0x16000410,0x00010001,0x05000002,0x21d00208,0x160001d0,0x00030003, +0x00000040,0x22001240,0x160001d0,0x09500950,0x00000041,0x20e01228,0x220004de,0x00008000, +0x00000001,0x21180ae8,0x000000e0,0x00000000,0x00000001,0x211c22e8,0x00008004,0x00000000, +0x09000038,0x21203ae8,0x3a000118,0x0000011c,0x00000001,0x41d43a48,0x00000120,0x00000000, +0x00000041,0x21401228,0x220004e0,0x00008000,0x00000001,0x21600ae8,0x00000140,0x00000000, +0x0000000c,0x21a01228,0x160004de,0x00010001,0x09000038,0x21803ae8,0x3a000160,0x0000011c, +0x04000010,0x20001220,0x0a0001d4,0x000001a0,0x00000001,0x41d83a48,0x00000180,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21d41248,0x160004de,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21d41248,0x120004de,0x000001d4, +0x0000000c,0x20e01228,0x160004e0,0x00010001,0x04000010,0x20001220,0x0a0001d8,0x000000e0, +0x00010020,0x34000004,0x0e001400,0x00000020,0x0000000c,0x21d81248,0x160004e0,0x00010001, +0x00000020,0x34000004,0x0e001400,0x00000010,0x05000002,0x21d81248,0x120004e0,0x000001d8, +0x00000040,0x21181228,0x160001d8,0x00070007,0x00000040,0x20e01228,0x160001d4,0x00070007, +0x00000001,0x24100208,0x000001d0,0x00000000,0x00000005,0x41d80a48,0x1e000118,0xfff8fff8, +0x00000005,0x41d40a48,0x1e0000e0,0xfff8fff8,0x00000001,0x21c81208,0x000001d8,0x00000000, +0x00000001,0x21c41208,0x000001d4,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x21c41208,0x00000020,0x00000000,0x00000001,0x21c81208,0x00000022,0x00000000, +0x01000010,0x20002260,0x1e000512,0x00000000,0x00000001,0x41c01e88,0x00000000,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41c01e88,0x00000000,0x00010001, +0x00000040,0x22000204,0x060000f4,0x020a0000,0x00000001,0x2128160c,0x00000000,0x00000000, +0x04000010,0x20002260,0x1e00002b,0x00020002,0x0000000c,0x420c1aa8,0x1e000940,0x00010001, +0x00000001,0x42001ea8,0x00000000,0x00000000,0x0a400033,0x0000e014,0x00002121,0x00000000, +0x00600001,0x21c01e08,0x00000000,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000130, +0x02000010,0x20002260,0x1e00002b,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000e0, +0x05000010,0x20001a60,0x1e000940,0x00280028,0x00010020,0x34000004,0x0e001400,0x000000c0, +0x00000001,0x20e01ae8,0x00000940,0x00000000,0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56, +0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000,0x00000040,0x21183ae8,0x3e0000e4,0xc197e502, +0x00000041,0x21443ae8,0x3e00011c,0x37229ad3,0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2, +0x00000041,0x21603ae8,0x3a000144,0x0000011c,0x0040015b,0x0a020000,0xf9208dc9,0x02472411, +0x0040015b,0x0c020400,0xf920a1c9,0x02c72411,0x00000001,0x21a03a28,0x00000180,0x00000000, +0x00000001,0x620c0aa8,0x000001a0,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x20e01a28,0x00000940,0x00000000,0x0c000038,0x21180a28,0x0e0000e0,0x00000004, +0x00000001,0x620c0aa8,0x00000118,0x00000000,0x05000002,0x20e02a28,0x1e00020c,0x003f003f, +0x01000010,0x20002260,0x1e000772,0x00000000,0x00000001,0x41c01a88,0x00000940,0x00000000, +0x04000002,0x620c0aa8,0x1e0000e0,0x00000000,0x00000001,0x41c12a88,0x0000020c,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000570,0x00000001,0x22041a68,0x00000940,0x00000000, +0x0000000c,0x420c1aa8,0x1e000940,0x00010001,0x00000001,0x22081e28,0x00000000,0x00000000, +0x00000041,0x20e00a28,0x1e000208,0x00200020,0x00000040,0x22000204,0x06000108,0x02180200, +0x02000010,0x20002260,0x1e00076f,0x00000000,0x00000008,0x21280a08,0x1e0000e0,0x00040004, +0x0a600031,0x25403a2c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000100, +0x00000040,0x22001240,0x16000208,0x07600760,0x00000040,0x21001a28,0x2a000940,0x00008000, +0x00000001,0x42040a68,0x00000100,0x00000000,0x04000010,0x20001a60,0x1a000204,0x0000005c, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005c,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000204,0x0000005e, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005e,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41000a68,0x00000100,0x00000000, +0x00000001,0x21001a68,0x00000100,0x00000000,0x00000001,0x22041a68,0x00000100,0x00000000, +0x0000000c,0x420c1aa8,0x1e000100,0x00010001,0x00000020,0x34000004,0x0e001400,0x00000110, +0x01000010,0x20000a20,0x1e000208,0x00000000,0x00010020,0x34000004,0x0e001400,0x000000f0, +0x00000040,0x22001240,0x16000208,0x07600760,0x00000040,0x21001a28,0x2a000940,0x00008000, +0x00000001,0x42040a68,0x00000100,0x00000000,0x04000010,0x20001a60,0x1a000204,0x0000005c, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005c,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000204,0x0000005e, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x21001a68,0x0000005e,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x41000a68,0x00000100,0x00000000, +0x00000001,0x21001a68,0x00000100,0x00000000,0x00000001,0x22041a68,0x00000100,0x00000000, +0x0000000c,0x420c1aa8,0x1e000100,0x00010001,0x04000010,0x20002260,0x1e00002b,0x00020002, +0x00010020,0x34000004,0x0e001400,0x00000130,0x02000010,0x20002260,0x1e00002b,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000000e0,0x05000010,0x20001a60,0x1e000204,0x00280028, +0x00010020,0x34000004,0x0e001400,0x000000c0,0x00000001,0x20e01ae8,0x00000204,0x00000000, +0x00000041,0x20e43ae8,0x3e0000e0,0x3ecb1d56,0x00000040,0x211c3ae8,0x3e0000e0,0xc2ff0000, +0x00000040,0x21183ae8,0x3e0000e4,0xc197e502,0x00000041,0x21443ae8,0x3e00011c,0x37229ad3, +0x00000041,0x21203ae8,0x3e00011c,0x3a047cd2,0x00000041,0x21603ae8,0x3a000144,0x0000011c, +0x0040015b,0x0a020000,0xf9208dc9,0x02472411,0x0040015b,0x0c020400,0xf920a1c9,0x02c72411, +0x00000001,0x21a03a28,0x00000180,0x00000000,0x00000001,0x620c0aa8,0x000001a0,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000030,0x00000001,0x20e01a28,0x00000204,0x00000000, +0x0c000038,0x21180a28,0x0e0000e0,0x00000004,0x00000001,0x620c0aa8,0x00000118,0x00000000, +0x05000002,0x20e02a28,0x1e00020c,0x003f003f,0x02000010,0x20000a20,0x1e000208,0x00000000, +0x04000002,0x21000a28,0x1e0000e0,0x00000000,0x00000001,0x620c0aa8,0x00000100,0x00000000, +0x00010020,0x34000004,0x0e001400,0x00000010,0x00000001,0x62000aa8,0x00000100,0x00000000, +0x04000040,0x42022aa8,0x2a00020c,0x00004200,0x00000005,0x455e2aa8,0x1e000202,0x003f003f, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20e02a68,0x00004202,0x00000000, +0x00000005,0x21181a28,0x1e0000e0,0x003f003f,0x00000006,0x61200aac,0x1e000118,0x00400040, +0x00000001,0x455e2aa8,0x00000120,0x00000000,0x00000040,0x20e00a28,0x1e000208,0x00040004, +0x00000040,0x22001240,0x160000e0,0x01c001c0,0x00000001,0xc0001a88,0x00000204,0x00000000, +0x00000001,0xc0082a88,0x0000020c,0x00000000,0x00000041,0x21180a28,0x1e000208,0x00200020, +0x00000040,0x22080a28,0x1e000208,0x00010001,0x00000040,0x22000204,0x0600010c,0x020a0200, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x05000010,0x20000a20,0x1e000208,0x00080008, +0x0a600033,0x0002a014,0x00002121,0x00000000,0x00010020,0x34000004,0x0e001400,0xfffffac0, +0x00000040,0x29481a28,0x2a000940,0x000000b8,0x00000001,0x2128160c,0x00000000,0x00000000, +0x00000040,0x22000204,0x06000114,0x020a0200,0x00000001,0x49440a68,0x00000948,0x00000000, +0x0a600033,0x0000e014,0x00002121,0x00000000,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29421a68,0x0000005c,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000060,0x06000010,0x20001a60,0x1a000944,0x0000005e, +0x00010020,0x34000004,0x0e001400,0x00000020,0x00000001,0x29441a68,0x0000005e,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000010,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000001,0x29421a68,0x00000944,0x00000000,0x00000041,0x20e01a28,0x1e000942,0x00400040, +0x00000040,0x22000204,0x060000ec,0x02280300,0x00000001,0x21601e68,0x00000000,0x00010001, +0x01000010,0x20002260,0x1e00076f,0x00000000,0x00000001,0x2148160c,0x00000000,0x00080008, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00010002,0x21801a28,0x1e000160,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x01000005,0x20002220,0x0a000025,0x00000180, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000e00, +0x00000040,0x29481a28,0x2a000940,0x00000761,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000762,0x00000001,0x2148160c,0x00000000,0x000c000c, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000763,0x00000001,0x2148160c,0x00000000,0x00100010, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000764,0x00000001,0x2148160c,0x00000000,0x00140014, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000765,0x00000001,0x2148160c,0x00000000,0x00180018, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000766,0x00000001,0x2148160c,0x00000000,0x001c001c, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000040,0x29481a28,0x2a000940,0x00000767,0x00000001,0x2148160c,0x00000000,0x00200020, +0x00000040,0x21180a28,0x1e0000e0,0x01800180,0x00000001,0x49440a68,0x00000948,0x00000000, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x04000010,0x20001a60,0x1a000944,0x0000005c, +0x0a800031,0x25403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0300, +0x0a800033,0x0002a054,0x00002142,0x00000000,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000040,0x29481a28,0x2a000942,0x000000b8,0x00000001,0x49440a68,0x00000948,0x00000000, +0x04000010,0x20001a60,0x1a000944,0x0000005c,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29421a68,0x0000005c,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000060, +0x06000010,0x20001a60,0x1a000944,0x0000005e,0x00010020,0x34000004,0x0e001400,0x00000020, +0x00000001,0x29441a68,0x0000005e,0x00000000,0x00000020,0x34000004,0x0e001400,0x00000010, +0x00000001,0x49440a68,0x00000948,0x00000000,0x00000001,0x29421a68,0x00000944,0x00000000, +0x00000041,0x20e01a28,0x1e000942,0x00400040,0x00000040,0x22000204,0x060000ec,0x02280300, +0x00000001,0x2148160c,0x00000000,0x00240024,0x00000040,0x21180a28,0x1e0000e0,0x01800180, +0x00000008,0x21280a08,0x1e000118,0x00040004,0x0a800031,0x25403a6c,0x00000120,0x00000200, +0x00000040,0x22000204,0x060000fc,0x020a0300,0x0a800033,0x0002a054,0x00002142,0x00000000, +0x00000001,0x2128160c,0x00000000,0x00000000,0x00000040,0x22000204,0x060000f8,0x02480400, +0x00000001,0x21c8160c,0x00000000,0x00000000,0x00000001,0x21e8160c,0x00000000,0x00280028, +0x00000001,0x2208160c,0x00000000,0x00280028,0x01000010,0x20002260,0x1e000769,0x00000000, +0x0a800031,0x21403a6c,0x00000120,0x00000200,0x00000040,0x22000204,0x060000fc,0x020a0400, +0x00000001,0x41571a88,0x00000940,0x00000000,0x0a800033,0x0000a054,0x000021c4,0x00000000, +0x00000040,0x22000204,0x060000f8,0x02280300,0x0a800031,0x25403a6c,0x000001e0,0x00000200, +0x00000040,0x22000204,0x060000fc,0x020a0300,0x0a800033,0x0002a054,0x00002202,0x00000000, +0x00010020,0x34000004,0x0e001400,0x000003e0,0x00000001,0x2128160c,0x00000000,0x00020002, +0x00000040,0x22000204,0x060000f8,0x02180200,0x02000010,0x20002a60,0x1e000ad4,0x00020002, +0x0a600031,0x20803a0c,0x00000120,0x00000200,0x00010020,0x34000004,0x0e001400,0x00000030, +0x00000001,0x45212288,0x00000520,0x00000000,0x00000001,0x45222288,0x00000521,0x00000000, +0x00000001,0x45232288,0x00000521,0x00000000,0x00000040,0x20e02228,0x1e000774,0x00180018, +0x00000040,0x22001240,0x160000e0,0x05080508,0x00000001,0xc0001a88,0x00000940,0x00000000, +0x00000040,0x21182228,0x1e000775,0x00180018,0x00000040,0x22001240,0x16000118,0x05080508, +0x00000001,0x49442288,0x00008000,0x00000000,0x00000040,0x21202228,0x1e000776,0x00180018, +0x00000040,0x22001240,0x16000120,0x05080508,0x00000001,0x49422288,0x00008000,0x00000000, +0x00000040,0x21402228,0x1e000777,0x00180018,0x00000040,0x22001240,0x16000140,0x05080508, +0x00000001,0x49462288,0x00008000,0x00000000,0x02000010,0x20002a60,0x1e000ac2,0xffffffff, +0x00010020,0x34000004,0x0e001400,0x00000040,0x00000001,0x20801648,0x00000000,0x00000000, +0x00000001,0x20821248,0x00000080,0x00000000,0x00000001,0x20841248,0x00000082,0x00000000, +0x00000020,0x34000004,0x0e001400,0x00000210,0x0000000c,0x40e42288,0x16000944,0x00040004, +0x00000005,0x20e02228,0x1e000944,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200, +0x00000041,0x21182228,0x1e0000e4,0x00200020,0x00000041,0x21601248,0x160000e0,0x00020002, +0x00000040,0x21200a28,0x1e000118,0x41804180,0x00000008,0x21480a08,0x1e000120,0x00040004, +0x0a600031,0x20403a0c,0x00000140,0x00000200,0x00000040,0x22001240,0x16000160,0x00400040, +0x00000001,0x20801248,0x00008000,0x00000000,0x0000000c,0x41842288,0x16000942,0x00040004, +0x00000005,0x21802228,0x1e000942,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200, +0x00000041,0x21a02228,0x1e000184,0x00200020,0x00000041,0x21181248,0x16000180,0x00020002, +0x00000040,0x21c00a28,0x1e0001a0,0x41804180,0x00000008,0x21e80a08,0x1e0001c0,0x00040004, +0x0a600031,0x20403a0c,0x000001e0,0x00000200,0x00000040,0x22001240,0x16000118,0x00400040, +0x00000001,0x20821248,0x00008000,0x00000000,0x0000000c,0x40e42288,0x16000946,0x00040004, +0x00000005,0x20e02228,0x1e000946,0x000f000f,0x00000040,0x22000204,0x060000ec,0x02180200, +0x00000041,0x21202228,0x1e0000e4,0x00200020,0x00000041,0x21a01248,0x160000e0,0x00020002, +0x00000040,0x21400a28,0x1e000120,0x41804180,0x00000008,0x21680a08,0x1e000140,0x00040004, +0x0a600031,0x20403a0c,0x00000160,0x00000200,0x00000040,0x22001240,0x160001a0,0x00400040, +0x00000001,0x24f21248,0x00008000,0x00000000,0x00000001,0x24ee1248,0x00000080,0x00000000, +0x00000001,0x24f01248,0x00000082,0x00000000,0x00000001,0x20841248,0x000004f2,0x00000000, +0x00000001,0x2128160c,0x00000000,0x00020002,0x00000040,0x22000204,0x060000fc,0x020a0200, +0x0a600033,0x00004014,0x00002121,0x00000000,0x00000001,0x452c1a88,0x00000940,0x00000000, +0x00000001,0x20401e28,0x00000000,0x00000000,0x00000009,0x20e00a28,0x1e000040,0x00050005, +0x00000009,0x20e40a28,0x1e000040,0x00070007,0x00000041,0x21181248,0x160000e0,0x00040004, +0x00000040,0x22001240,0x16000118,0x02400240,0x00600001,0x21200208,0x00208000,0x00000000, +0x00600001,0x21400208,0x00208020,0x00000000,0x00600001,0x21600208,0x00208040,0x00000000, +0x00600001,0x21800208,0x00208060,0x00000000,0x00000040,0x20400a28,0x1e000040,0x00010001, +0x00000008,0x21a80a08,0x1e0000e4,0x00040004,0x00000040,0x22000204,0x060000e8,0x020a0400, +0x05000010,0x20000a20,0x1e000040,0x00060006,0x0a800033,0x00009054,0x000021a4,0x00000000, +0x00010020,0x34000004,0x0e001400,0xffffff20,0x20004d01,0x00007f07,0x07000031,0x20003a00, +0x06000fe0,0x82000010,0x0000007e,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000, +0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 +}; diff -Nru intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder_kernels.h intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder_kernels.h --- intel-vaapi-driver-1.6.2/src/gen9_vp9_encoder_kernels.h 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/gen9_vp9_encoder_kernels.h 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWAR + * + * Authors: + * Zhao, Yakui + * + */ + +#ifndef _GEN9_VP9_ENCODER_KERNELS_H +#define _GEN9_VP9_ENCODER_KERNELS_H + +#define AllVP9ENC_SZ 39334 +extern const unsigned int media_vp9_kernels[AllVP9ENC_SZ]; + +#endif diff -Nru intel-vaapi-driver-1.6.2/src/i965_decoder_utils.c intel-vaapi-driver-1.7.1/src/i965_decoder_utils.c --- intel-vaapi-driver-1.6.2/src/i965_decoder_utils.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_decoder_utils.c 2016-06-16 00:57:46.000000000 +0000 @@ -1225,9 +1225,25 @@ ) { VAStatus va_status = VA_STATUS_SUCCESS; + int update = 0; + unsigned int fourcc = VA_FOURCC_NV12; + + if(pic_param->profile >= 2) + { + if(obj_surface->fourcc != VA_FOURCC_P010) + { + update = 1; + fourcc = VA_FOURCC_P010; + } + } + else if(obj_surface->fourcc != VA_FOURCC_NV12) + { + update = 1; + fourcc = VA_FOURCC_NV12; + } /* (Re-)allocate the underlying surface buffer store, if necessary */ - if (!obj_surface->bo || obj_surface->fourcc != VA_FOURCC_NV12) { + if (!obj_surface->bo || update) { struct i965_driver_data * const i965 = i965_driver_data(ctx); i965_destroy_surface_storage(obj_surface); @@ -1235,7 +1251,7 @@ va_status = i965_check_alloc_surface_bo(ctx, obj_surface, i965->codec_info->has_tiled_surface, - VA_FOURCC_NV12, + fourcc, SUBSAMPLE_YUV420); } @@ -1313,6 +1329,7 @@ //then sets the reference frames in the decode_state static VAStatus intel_decoder_check_vp9_parameter(VADriverContextP ctx, + VAProfile profile, struct decode_state *decode_state) { struct i965_driver_data *i965 = i965_driver_data(ctx); @@ -1321,11 +1338,14 @@ struct object_surface *obj_surface; int i=0, index=0; + if((profile - VAProfileVP9Profile0) < pic_param->profile) + return va_status; + //Max support upto 4k for BXT - if ((pic_param->frame_width-1 < 7) || (pic_param->frame_width-1 > 4095)) + if ((pic_param->frame_width-1 < 0) || (pic_param->frame_width-1 > 4095)) return va_status; - if ((pic_param->frame_height-1 < 7) || (pic_param->frame_height-1 > 4095)) + if ((pic_param->frame_height-1 < 0) || (pic_param->frame_height-1 > 4095)) return va_status; //Set the reference object in decode state for last reference @@ -1420,7 +1440,8 @@ break; case VAProfileVP9Profile0: - vaStatus = intel_decoder_check_vp9_parameter(ctx, decode_state); + case VAProfileVP9Profile2: + vaStatus = intel_decoder_check_vp9_parameter(ctx, profile, decode_state); break; default: diff -Nru intel-vaapi-driver-1.6.2/src/i965_defines.h intel-vaapi-driver-1.7.1/src/i965_defines.h --- intel-vaapi-driver-1.6.2/src/i965_defines.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_defines.h 2016-06-21 01:35:12.000000000 +0000 @@ -635,6 +635,8 @@ #define I965_SURFACEFORMAT_R16G16B16_SSCALED 0x19E #define I965_SURFACEFORMAT_R16G16B16_USCALED 0x19F +#define I965_SURFACEFORMAT_RAW 0x1FF + #define I965_CULLMODE_BOTH 0 #define I965_CULLMODE_NONE 1 #define I965_CULLMODE_FRONT 2 @@ -918,4 +920,62 @@ #define HCP_CODEC_SELECT_DECODE 0 #define HCP_CODEC_SELECT_ENCODE 1 +/* VDEnc/HuC */ +/* HuC commands */ +#define HUC(command) \ + (3 << 29 | \ + 2 << 27 | \ + 11 << 23 | \ + (command << 16)) + +#define HUC_PIPE_MODE_SELECT HUC(0) +#define HUC_IMEM_STATE HUC(1) +#define HUC_DMEM_STATE HUC(2) +#define HUC_CFG_STATE HUC(3) +#define HUC_VIRTUAL_ADDR_STATE HUC(4) +#define HUC_IND_OBJ_BASE_ADDR_STATE HUC(5) +#define HUC_STREAM_OBJECT HUC(32) +#define HUC_START HUC(33) + +/* HuC registers */ +#define VCS0_HUC_STATUS 0xD000 +#define VCS0_HUC_STATUS2 0xD3B0 + +/* VDEnc commands */ +#define VDENC(opcode, sub_opcode_a, sub_opcode_b) \ + (3 << 29 | \ + 2 << 27 | \ + opcode << 23 | \ + sub_opcode_a << 21 | \ + sub_opcode_b << 16) + +#define VD_PIPELINE_FLUSH VDENC(15, 0, 0) + +#define VDENC_PIPE_MODE_SELECT VDENC(1, 0, 0) +#define VDENC_SRC_SURFACE_STATE VDENC(1, 0, 1) +#define VDENC_REF_SURFACE_STATE VDENC(1, 0, 2) +#define VDENC_DS_REF_SURFACE_STATE VDENC(1, 0, 3) +#define VDENC_PIPE_BUF_ADDR_STATE VDENC(1, 0, 4) +#define VDENC_IMG_STATE VDENC(1, 0, 5) +#define VDENC_CONST_QPT_STATE VDENC(1, 0, 6) +#define VDENC_WALKER_STATE VDENC(1, 0, 7) + +#define VDENC_CODEC_AVC 2 + +#define VDENC_SURFACE_YUV422 0 +#define VDENC_SURFACE_RGBA444 1 +#define VDENC_SURFACE_YUV444 2 +#define VDENC_SURFACE_Y8_UNORM 3 +#define VDENC_SURFACE_PLANAR_420_8 4 +#define VDENC_SURFACE_YCBCR_SWAP_Y 5 +#define VDENC_SURFACE_YCBCR_SWAP_UV 6 +#define VDENC_SURFACE_YCBCR_SWAP_UVY 7 +#define VDENC_SURFACE_P010 8 +#define VDENC_SURFACE_RGBA10 9 +#define VDENC_SURFACE_Y410 10 +#define VDENC_SURFACE_NV21 11 + +#define MFC_BITSTREAM_BYTECOUNT_FRAME_REG 0x128A0 +#define MFC_IMAGE_STATUS_CTRL_REG 0x128B8 + #endif /* _I965_DEFINES_H_ */ diff -Nru intel-vaapi-driver-1.6.2/src/i965_device_info.c intel-vaapi-driver-1.7.1/src/i965_device_info.c --- intel-vaapi-driver-1.6.2/src/i965_device_info.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_device_info.c 2016-06-21 01:35:12.000000000 +0000 @@ -48,10 +48,16 @@ #define EXTRA_HEVC_DEC_CHROMA_FORMATS \ (VA_RT_FORMAT_YUV420_10BPP) +#define EXTRA_VP9_DEC_CHROMA_FORMATS \ + (VA_RT_FORMAT_YUV420_10BPP) + /* Defines VA profile as a 32-bit unsigned integer mask */ #define VA_PROFILE_MASK(PROFILE) \ (1U << VAProfile##PROFILE) +#define VP9_PROFILE_MASK(PROFILE) \ + (1U << PROFILE) + extern struct hw_context *i965_proc_context_init(VADriverContextP, struct object_config *); extern struct hw_context *g4x_dec_hw_context_init(VADriverContextP, struct object_config *); extern bool genx_render_init(VADriverContextP); @@ -351,6 +357,9 @@ .has_h264_mvc_encoding = 1, .has_hevc_decoding = 1, .has_hevc_encoding = 1, + .has_lp_h264_encoding = 1, + + .lp_h264_brc_mode = VA_RC_CQP, .num_filters = 5, .filters = { @@ -372,11 +381,13 @@ .max_width = 4096, .max_height = 4096, - .min_linear_wpitch = 64, + .min_linear_wpitch = 128, .min_linear_hpitch = 16, .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) | VA_PROFILE_MASK(H264MultiviewHigh)), + .vp9_dec_profiles = VP9_PROFILE_MASK(0), + .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS, .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS, .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS, @@ -401,6 +412,7 @@ .has_hevc_encoding = 1, .has_hevc10_decoding = 1, .has_vp9_decoding = 1, + .has_vpp_p010 = 1, .num_filters = 5, .filters = { @@ -412,6 +424,61 @@ }, }; +static struct hw_codec_info kbl_hw_codec_info = { + .dec_hw_context_init = gen9_dec_hw_context_init, + .enc_hw_context_init = gen9_enc_hw_context_init, + .proc_hw_context_init = gen75_proc_context_init, + .render_init = gen9_render_init, + .post_processing_context_init = gen9_post_processing_context_init, + + .max_width = 4096, + .max_height = 4096, + .min_linear_wpitch = 128, + .min_linear_hpitch = 16, + + .h264_mvc_dec_profiles = (VA_PROFILE_MASK(H264StereoHigh) | + VA_PROFILE_MASK(H264MultiviewHigh)), + .vp9_dec_profiles = VP9_PROFILE_MASK(0) | + VP9_PROFILE_MASK(2), + + .h264_dec_chroma_formats = EXTRA_H264_DEC_CHROMA_FORMATS, + .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS, + .jpeg_enc_chroma_formats = EXTRA_JPEG_ENC_CHROMA_FORMATS, + .hevc_dec_chroma_formats = EXTRA_HEVC_DEC_CHROMA_FORMATS, + .vp9_dec_chroma_formats = EXTRA_VP9_DEC_CHROMA_FORMATS, + + .has_mpeg2_decoding = 1, + .has_mpeg2_encoding = 1, + .has_h264_decoding = 1, + .has_h264_encoding = 1, + .has_vc1_decoding = 1, + .has_jpeg_decoding = 1, + .has_jpeg_encoding = 1, + .has_vpp = 1, + .has_accelerated_getimage = 1, + .has_accelerated_putimage = 1, + .has_tiled_surface = 1, + .has_di_motion_adptive = 1, + .has_di_motion_compensated = 1, + .has_vp8_decoding = 1, + .has_vp8_encoding = 1, + .has_h264_mvc_encoding = 1, + .has_hevc_decoding = 1, + .has_hevc_encoding = 1, + .has_hevc10_decoding = 1, + .has_vp9_decoding = 1, + .has_vpp_p010 = 1, + .has_vp9_encoding = 1, + + .num_filters = 5, + .filters = { + { VAProcFilterNoiseReduction, I965_RING_VEBOX }, + { VAProcFilterDeinterlacing, I965_RING_VEBOX }, + { VAProcFilterSharpening, I965_RING_NULL }, + { VAProcFilterColorBalance, I965_RING_VEBOX}, + { VAProcFilterSkinToneEnhancement, I965_RING_VEBOX}, + }, +}; struct hw_codec_info * i965_get_codec_info(int devid) @@ -539,6 +606,8 @@ .urb_size = 4096, .max_wm_threads = 64, /* per PSD */ + + .is_skylake = 1, }; static const struct intel_device_info bxt_device_info = { @@ -549,6 +618,15 @@ .is_broxton = 1, }; +static const struct intel_device_info kbl_device_info = { + .gen = 9, + + .urb_size = 4096, + .max_wm_threads = 64, /* per PSD */ + + .is_kabylake = 1, +}; + const struct intel_device_info * i965_get_device_info(int devid) { diff -Nru intel-vaapi-driver-1.6.2/src/i965_drv_video.c intel-vaapi-driver-1.7.1/src/i965_drv_video.c --- intel-vaapi-driver-1.6.2/src/i965_drv_video.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_drv_video.c 2016-06-21 01:35:12.000000000 +0000 @@ -48,6 +48,8 @@ #include "i965_decoder.h" #include "i965_encoder.h" +#include "gen9_vp9_encapi.h" + #define CONFIG_ID_OFFSET 0x01000000 #define CONTEXT_ID_OFFSET 0x02000000 #define SURFACE_ID_OFFSET 0x04000000 @@ -67,6 +69,9 @@ #define HAS_H264_ENCODING(ctx) ((ctx)->codec_info->has_h264_encoding && \ (ctx)->intel.has_bsd) +#define HAS_LP_H264_ENCODING(ctx) ((ctx)->codec_info->has_lp_h264_encoding && \ + (ctx)->intel.has_bsd) + #define HAS_VC1_DECODING(ctx) ((ctx)->codec_info->has_vc1_decoding && \ (ctx)->intel.has_bsd) @@ -109,9 +114,19 @@ #define HAS_VP9_DECODING(ctx) ((ctx)->codec_info->has_vp9_decoding && \ (ctx)->intel.has_bsd) +#define HAS_VP9_DECODING_PROFILE(ctx, profile) \ + (HAS_VP9_DECODING(ctx) && \ + ((ctx)->codec_info->vp9_dec_profiles & (1U << (profile - VAProfileVP9Profile0)))) + #define HAS_HEVC10_DECODING(ctx) ((ctx)->codec_info->has_hevc10_decoding && \ (ctx)->intel.has_bsd) +#define HAS_VPP_P010(ctx) ((ctx)->codec_info->has_vpp_p010 && \ + (ctx)->intel.has_bsd) + +#define HAS_VP9_ENCODING(ctx) ((ctx)->codec_info->has_vp9_encoding && \ + (ctx)->intel.has_bsd) + static int get_sampling_from_fourcc(unsigned int fourcc); /* Check whether we are rendering to X11 (VA/X11 or VA/GLX API) */ @@ -227,7 +242,7 @@ { unsigned int i; - for (i = 0; ARRAY_ELEMS(i965_fourcc_infos); i++) { + for (i = 0; i < ARRAY_ELEMS(i965_fourcc_infos); i++) { const i965_fourcc_info * const info = &i965_fourcc_infos[i]; if (info->fourcc == fourcc) @@ -316,6 +331,8 @@ { VA_FOURCC_RGBX, VA_LSB_FIRST, 32, 24, 0x000000ff, 0x0000ff00, 0x00ff0000 } }, { I965_SURFACETYPE_RGBA, { VA_FOURCC_BGRX, VA_LSB_FIRST, 32, 24, 0x00ff0000, 0x0000ff00, 0x000000ff } }, + { I965_SURFACETYPE_YUV, + { VA_FOURCC_P010, VA_LSB_FIRST, 24, } }, }; /* List of supported subpicture formats */ @@ -550,14 +567,17 @@ } if (HAS_H264_DECODING(i965) || - HAS_H264_ENCODING(i965)) { + HAS_H264_ENCODING(i965) || + HAS_LP_H264_ENCODING(i965)) { profile_list[i++] = VAProfileH264ConstrainedBaseline; profile_list[i++] = VAProfileH264Main; profile_list[i++] = VAProfileH264High; } - if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264MultiviewHigh)) + if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264MultiviewHigh) || + HAS_H264_MVC_ENCODING(i965)) profile_list[i++] = VAProfileH264MultiviewHigh; - if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264StereoHigh)) + if (HAS_H264_MVC_DECODING_PROFILE(i965, VAProfileH264StereoHigh) || + HAS_H264_MVC_ENCODING(i965)) profile_list[i++] = VAProfileH264StereoHigh; if (HAS_VC1_DECODING(i965)) { @@ -580,11 +600,6 @@ profile_list[i++] = VAProfileVP8Version0_3; } - if (HAS_H264_MVC_ENCODING(i965)) { - profile_list[i++] = VAProfileH264MultiviewHigh; - profile_list[i++] = VAProfileH264StereoHigh; - } - if (HAS_HEVC_DECODING(i965)|| HAS_HEVC_ENCODING(i965)) { profile_list[i++] = VAProfileHEVCMain; @@ -594,10 +609,15 @@ profile_list[i++] = VAProfileHEVCMain10; } - if(HAS_VP9_DECODING(i965)) { + if(HAS_VP9_DECODING_PROFILE(i965, VAProfileVP9Profile0) || + HAS_VP9_ENCODING(i965)) { profile_list[i++] = VAProfileVP9Profile0; } + if(HAS_VP9_DECODING_PROFILE(i965, VAProfileVP9Profile2)) { + profile_list[i++] = VAProfileVP9Profile2; + } + if (i965->wrapper_pdrvctx) { VAProfile wrapper_list[4]; int wrapper_num; @@ -653,6 +673,9 @@ if (HAS_H264_ENCODING(i965)) entrypoint_list[n++] = VAEntrypointEncSlice; + if (HAS_LP_H264_ENCODING(i965)) + entrypoint_list[n++] = VAEntrypointEncSliceLP; + break; case VAProfileH264MultiviewHigh: case VAProfileH264StereoHigh: @@ -708,18 +731,24 @@ break; case VAProfileVP9Profile0: - if(HAS_VP9_DECODING(i965)) + case VAProfileVP9Profile2: + if(HAS_VP9_DECODING_PROFILE(i965, profile)) entrypoint_list[n++] = VAEntrypointVLD; - if (i965->wrapper_pdrvctx) { - VAStatus va_status = VA_STATUS_SUCCESS; - VADriverContextP pdrvctx = i965->wrapper_pdrvctx; + if (HAS_VP9_ENCODING(i965) && (profile == VAProfileVP9Profile0)) + entrypoint_list[n++] = VAEntrypointEncSlice; - CALL_VTABLE(pdrvctx, va_status, - vaQueryConfigEntrypoints(pdrvctx, profile, - entrypoint_list, - num_entrypoints)); - return va_status; + if(profile == VAProfileVP9Profile0) { + if (i965->wrapper_pdrvctx) { + VAStatus va_status = VA_STATUS_SUCCESS; + VADriverContextP pdrvctx = i965->wrapper_pdrvctx; + + CALL_VTABLE(pdrvctx, va_status, + vaQueryConfigEntrypoints(pdrvctx, profile, + entrypoint_list, + num_entrypoints)); + return va_status; + } } break; @@ -757,7 +786,8 @@ case VAProfileH264Main: case VAProfileH264High: if ((HAS_H264_DECODING(i965) && entrypoint == VAEntrypointVLD) || - (HAS_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSlice)) { + (HAS_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSlice) || + (HAS_LP_H264_ENCODING(i965) && entrypoint == VAEntrypointEncSliceLP)) { va_status = VA_STATUS_SUCCESS; } else { va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; @@ -830,9 +860,12 @@ break; case VAProfileVP9Profile0: - if ((HAS_VP9_DECODING(i965)) && (entrypoint == VAEntrypointVLD)) + case VAProfileVP9Profile2: + if ((HAS_VP9_DECODING_PROFILE(i965, profile)) && (entrypoint == VAEntrypointVLD)) + va_status = VA_STATUS_SUCCESS; + else if ((HAS_VP9_ENCODING(i965)) && (entrypoint == VAEntrypointEncSlice)) va_status = VA_STATUS_SUCCESS; - else if (i965->wrapper_pdrvctx) + else if ((profile == VAProfileVP9Profile0) && i965->wrapper_pdrvctx) va_status = VA_STATUS_SUCCESS; else va_status = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; @@ -874,10 +907,21 @@ break; case VAProfileHEVCMain10: - chroma_formats = 0; // clear YUV420 8bits format support if (HAS_HEVC10_DECODING(i965) && entrypoint == VAEntrypointVLD) chroma_formats |= i965->codec_info->hevc_dec_chroma_formats; break; + + case VAProfileNone: + if(HAS_VPP_P010(i965)) + chroma_formats |= VA_RT_FORMAT_YUV420_10BPP; + break; + + case VAProfileVP9Profile0: + case VAProfileVP9Profile2: + if (HAS_VP9_DECODING_PROFILE(i965, profile) && entrypoint == VAEntrypointVLD) + chroma_formats |= i965->codec_info->vp9_dec_chroma_formats; + break; + default: break; } @@ -915,12 +959,29 @@ if (profile != VAProfileMPEG2Main && profile != VAProfileMPEG2Simple) attrib_list[i].value |= VA_RC_CBR; + + if (profile == VAProfileVP9Profile0) + attrib_list[i].value |= VA_RC_VBR; + break; - } + } else if (entrypoint == VAEntrypointEncSliceLP) { + struct i965_driver_data * const i965 = i965_driver_data(ctx); + + /* Support low power encoding for H.264 only by now */ + if (profile == VAProfileH264ConstrainedBaseline || + profile == VAProfileH264Main || + profile == VAProfileH264High) + attrib_list[i].value = i965->codec_info->lp_h264_brc_mode; + else + attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED; + } else + attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED; + break; case VAConfigAttribEncPackedHeaders: - if (entrypoint == VAEntrypointEncSlice) { + if (entrypoint == VAEntrypointEncSlice || + entrypoint == VAEntrypointEncSliceLP) { attrib_list[i].value = VA_ENC_PACKED_HEADER_SEQUENCE | VA_ENC_PACKED_HEADER_PICTURE | VA_ENC_PACKED_HEADER_MISC; if (profile == VAProfileH264ConstrainedBaseline || profile == VAProfileH264Main || @@ -931,6 +992,8 @@ attrib_list[i].value |= (VA_ENC_PACKED_HEADER_RAW_DATA | VA_ENC_PACKED_HEADER_SLICE); } + else if (profile == VAProfileVP9Profile0) + attrib_list[i].value = VA_ENC_PACKED_HEADER_RAW_DATA; break; } else if (entrypoint == VAEntrypointEncPicture) { @@ -940,14 +1003,23 @@ break; case VAConfigAttribEncMaxRefFrames: - if (entrypoint == VAEntrypointEncSlice) { + if (entrypoint == VAEntrypointEncSlice) attrib_list[i].value = (1 << 16) | (1 << 0); - break; + else if (entrypoint == VAEntrypointEncSliceLP) { + /* Don't support B frame for low power mode */ + if (profile == VAProfileH264ConstrainedBaseline || + profile == VAProfileH264Main || + profile == VAProfileH264High) + attrib_list[i].value = (1 << 0); + else + attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED; } + break; case VAConfigAttribEncQualityRange: - if (entrypoint == VAEntrypointEncSlice) { + if (entrypoint == VAEntrypointEncSlice || + entrypoint == VAEntrypointEncSliceLP) { attrib_list[i].value = 1; if (profile == VAProfileH264ConstrainedBaseline || profile == VAProfileH264Main || @@ -975,6 +1047,17 @@ attrib_list[i].value = VA_DEC_SLICE_MODE_NORMAL; break; + case VAConfigAttribEncROI: + if ((entrypoint == VAEntrypointEncSliceLP) && + (profile == VAProfileH264ConstrainedBaseline || + profile == VAProfileH264Main || + profile == VAProfileH264High)) + attrib_list[i].value = 3; + else + attrib_list[i].value = 0; + + break; + default: /* Do nothing */ attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED; @@ -1087,7 +1170,9 @@ } if ((vaStatus == VA_STATUS_SUCCESS) && - (profile == VAProfileVP9Profile0)) { + (profile == VAProfileVP9Profile0) && + (entrypoint == VAEntrypointVLD) && + !HAS_VP9_DECODING(i965)) { if (i965->wrapper_pdrvctx) { VAGenericID wrapper_config; @@ -1975,6 +2060,9 @@ i965_release_buffer_store(&obj_context->codec_state.encode.pic_param); i965_release_buffer_store(&obj_context->codec_state.encode.seq_param); + i965_release_buffer_store(&obj_context->codec_state.encode.q_matrix); + i965_release_buffer_store(&obj_context->codec_state.encode.huffman_table); + for (i = 0; i < obj_context->codec_state.encode.num_slice_params; i++) i965_release_buffer_store(&obj_context->codec_state.encode.slice_params[i]); @@ -2019,6 +2107,7 @@ i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data_ext[i]); free(obj_context->codec_state.encode.packed_header_data_ext); + i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map); } else { assert(obj_context->codec_state.decode.num_slice_params <= obj_context->codec_state.decode.max_slice_params); assert(obj_context->codec_state.decode.num_slice_datas <= obj_context->codec_state.decode.max_slice_datas); @@ -2112,7 +2201,8 @@ assert(i965->codec_info->proc_hw_context_init); obj_context->hw_context = i965->codec_info->proc_hw_context_init(ctx, obj_config); } else if ((VAEntrypointEncSlice == obj_config->entrypoint) || - (VAEntrypointEncPicture == obj_config->entrypoint)) { /*encode routine only*/ + (VAEntrypointEncPicture == obj_config->entrypoint) || + (VAEntrypointEncSliceLP == obj_config->entrypoint)) { VAConfigAttrib *packed_attrib; obj_context->codec_type = CODEC_ENC; memset(&obj_context->codec_state.encode, 0, sizeof(obj_context->codec_state.encode)); @@ -2143,9 +2233,12 @@ obj_context->codec_state.encode.slice_index = 0; packed_attrib = i965_lookup_config_attribute(obj_config, VAConfigAttribEncPackedHeaders); - if (packed_attrib) + if (packed_attrib) { obj_context->codec_state.encode.packed_header_flag = packed_attrib->value; - else { + if (obj_config->profile == VAProfileVP9Profile0) + obj_context->codec_state.encode.packed_header_flag = + packed_attrib->value & VA_ENC_PACKED_HEADER_RAW_DATA; + } else { /* use the default value. SPS/PPS/RAWDATA is passed from user * while Slice_header data is generated by driver. */ @@ -2153,6 +2246,10 @@ VA_ENC_PACKED_HEADER_SEQUENCE | VA_ENC_PACKED_HEADER_PICTURE | VA_ENC_PACKED_HEADER_RAW_DATA; + + /* it is not used for VP9 */ + if (obj_config->profile == VAProfileVP9Profile0) + obj_context->codec_state.encode.packed_header_flag = 0; } assert(i965->codec_info->enc_hw_context_init); obj_context->hw_context = i965->codec_info->enc_hw_context_init(ctx, obj_config); @@ -2289,6 +2386,7 @@ case VAProcFilterParameterBufferType: case VAHuffmanTableBufferType: case VAProbabilityBufferType: + case VAEncMacroblockMapBufferType: /* Ok */ break; @@ -2315,6 +2413,7 @@ obj_buffer->export_refcount = 0; obj_buffer->buffer_store = NULL; obj_buffer->wrapper_buffer = VA_INVALID_ID; + obj_buffer->context_id = context; buffer_store = calloc(1, sizeof(struct buffer_store)); assert(buffer_store); @@ -2348,6 +2447,7 @@ } else if (type == VASliceDataBufferType || type == VAImageBufferType || type == VAEncCodedBufferType || + type == VAEncMacroblockMapBufferType || type == VAProbabilityBufferType) { /* If the buffer is wrapped, the bo/buffer of buffer_store is bogus. @@ -2379,6 +2479,7 @@ coded_buffer_segment->base.next = NULL; coded_buffer_segment->mapped = 0; coded_buffer_segment->codec = 0; + coded_buffer_segment->status_support = 0; dri_bo_unmap(buffer_store->bo); } else if (data) { dri_bo_subdata(buffer_store->bo, 0, size * num_elements, data); @@ -2469,9 +2570,12 @@ struct i965_driver_data *i965 = i965_driver_data(ctx); struct object_buffer *obj_buffer = BUFFER(buf_id); VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN; + struct object_context *obj_context; ASSERT_RET(obj_buffer && obj_buffer->buffer_store, VA_STATUS_ERROR_INVALID_BUFFER); + obj_context = CONTEXT(obj_buffer->context_id); + /* When the wrapper_buffer exists, it will wrapper to the * buffer allocated from backend driver. */ @@ -2502,6 +2606,7 @@ ASSERT_RET(obj_buffer->buffer_store->bo->virtual, VA_STATUS_ERROR_OPERATION_FAILED); *pbuf = obj_buffer->buffer_store->bo->virtual; + vaStatus = VA_STATUS_SUCCESS; if (obj_buffer->type == VAEncCodedBufferType) { int i; @@ -2514,69 +2619,89 @@ coded_buffer_segment->base.buf = buffer = (unsigned char *)(obj_buffer->buffer_store->bo->virtual) + I965_CODEDBUFFER_HEADER_SIZE; - if (coded_buffer_segment->codec == CODEC_H264 || - coded_buffer_segment->codec == CODEC_H264_MVC) { - delimiter0 = H264_DELIMITER0; - delimiter1 = H264_DELIMITER1; - delimiter2 = H264_DELIMITER2; - delimiter3 = H264_DELIMITER3; - delimiter4 = H264_DELIMITER4; - } else if (coded_buffer_segment->codec == CODEC_MPEG2) { - delimiter0 = MPEG2_DELIMITER0; - delimiter1 = MPEG2_DELIMITER1; - delimiter2 = MPEG2_DELIMITER2; - delimiter3 = MPEG2_DELIMITER3; - delimiter4 = MPEG2_DELIMITER4; - } else if(coded_buffer_segment->codec == CODEC_JPEG) { - //In JPEG End of Image (EOI = 0xDDF9) marker can be used for delimiter. - delimiter0 = 0xFF; - delimiter1 = 0xD9; - } else if (coded_buffer_segment->codec == CODEC_HEVC) { - delimiter0 = HEVC_DELIMITER0; - delimiter1 = HEVC_DELIMITER1; - delimiter2 = HEVC_DELIMITER2; - delimiter3 = HEVC_DELIMITER3; - delimiter4 = HEVC_DELIMITER4; - } else if (coded_buffer_segment->codec != CODEC_VP8) { - ASSERT_RET(0, VA_STATUS_ERROR_UNSUPPORTED_PROFILE); - } + if (obj_context && + obj_context->hw_context && + obj_context->hw_context->get_status && + coded_buffer_segment->status_support) { + vaStatus = obj_context->hw_context->get_status(ctx, obj_context->hw_context, coded_buffer_segment); + } else { - if(coded_buffer_segment->codec == CODEC_JPEG) { - for(i = 0; i < obj_buffer->size_element - header_offset - 1 - 0x1000; i++) { - if( (buffer[i] == 0xFF) && (buffer[i + 1] == 0xD9)) { - break; + if (coded_buffer_segment->codec == CODEC_VP9) { + + if (obj_context == NULL) + return VA_STATUS_ERROR_ENCODING_ERROR; + + gen9_vp9_get_coded_status(ctx, (char *)coded_buffer_segment, + obj_context->hw_context); + } + else if (coded_buffer_segment->codec == CODEC_H264 || + coded_buffer_segment->codec == CODEC_H264_MVC) { + delimiter0 = H264_DELIMITER0; + delimiter1 = H264_DELIMITER1; + delimiter2 = H264_DELIMITER2; + delimiter3 = H264_DELIMITER3; + delimiter4 = H264_DELIMITER4; + } else if (coded_buffer_segment->codec == CODEC_MPEG2) { + delimiter0 = MPEG2_DELIMITER0; + delimiter1 = MPEG2_DELIMITER1; + delimiter2 = MPEG2_DELIMITER2; + delimiter3 = MPEG2_DELIMITER3; + delimiter4 = MPEG2_DELIMITER4; + } else if(coded_buffer_segment->codec == CODEC_JPEG) { + //In JPEG End of Image (EOI = 0xDDF9) marker can be used for delimiter. + delimiter0 = 0xFF; + delimiter1 = 0xD9; + } else if (coded_buffer_segment->codec == CODEC_HEVC) { + delimiter0 = HEVC_DELIMITER0; + delimiter1 = HEVC_DELIMITER1; + delimiter2 = HEVC_DELIMITER2; + delimiter3 = HEVC_DELIMITER3; + delimiter4 = HEVC_DELIMITER4; + } else if (coded_buffer_segment->codec != CODEC_VP8) { + ASSERT_RET(0, VA_STATUS_ERROR_UNSUPPORTED_PROFILE); + } + + if(coded_buffer_segment->codec == CODEC_VP9) { + /* it is already handled */ + } else + if(coded_buffer_segment->codec == CODEC_JPEG) { + for(i = 0; i < obj_buffer->size_element - header_offset - 1 - 0x1000; i++) { + if( (buffer[i] == 0xFF) && (buffer[i + 1] == 0xD9)) { + break; + } } - } - coded_buffer_segment->base.size = i + 2; - } else if (coded_buffer_segment->codec != CODEC_VP8) { - /* vp8 coded buffer size can be told by vp8 internal statistics buffer, - so it don't need to traversal the coded buffer */ - for (i = 0; i < obj_buffer->size_element - header_offset - 3 - 0x1000; i++) { - if ((buffer[i] == delimiter0) && - (buffer[i + 1] == delimiter1) && - (buffer[i + 2] == delimiter2) && - (buffer[i + 3] == delimiter3) && - (buffer[i + 4] == delimiter4)) - break; + coded_buffer_segment->base.size = i + 2; + } else if (coded_buffer_segment->codec != CODEC_VP8) { + /* vp8 coded buffer size can be told by vp8 internal statistics buffer, + so it don't need to traversal the coded buffer */ + for (i = 0; i < obj_buffer->size_element - header_offset - 3 - 0x1000; i++) { + if ((buffer[i] == delimiter0) && + (buffer[i + 1] == delimiter1) && + (buffer[i + 2] == delimiter2) && + (buffer[i + 3] == delimiter3) && + (buffer[i + 4] == delimiter4)) + break; + } + + if (i == obj_buffer->size_element - header_offset - 3 - 0x1000) { + coded_buffer_segment->base.status |= VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK; + } + coded_buffer_segment->base.size = i; } - if (i == obj_buffer->size_element - header_offset - 3 - 0x1000) { + if (coded_buffer_segment->base.size >= obj_buffer->size_element - header_offset - 0x1000) { coded_buffer_segment->base.status |= VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK; } - coded_buffer_segment->base.size = i; - } - if (coded_buffer_segment->base.size >= obj_buffer->size_element - header_offset - 0x1000) { - coded_buffer_segment->base.status |= VA_CODED_BUF_STATUS_SLICE_OVERFLOW_MASK; + vaStatus = VA_STATUS_SUCCESS; } coded_buffer_segment->mapped = 1; } else { assert(coded_buffer_segment->base.buf); + vaStatus = VA_STATUS_SUCCESS; } } - - vaStatus = VA_STATUS_SUCCESS; } else if (NULL != obj_buffer->buffer_store->buffer) { *pbuf = obj_buffer->buffer_store->buffer; vaStatus = VA_STATUS_SUCCESS; @@ -2713,6 +2838,14 @@ obj_context->codec_state.encode.num_packed_header_data_ext = 0; obj_context->codec_state.encode.slice_index = 0; obj_context->codec_state.encode.vps_sps_seq_index = 0; + i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map); + + if (obj_config->profile == VAProfileVP9Profile0) { + for (i = 0; i < ARRAY_ELEMS(obj_context->codec_state.encode.misc_param); i++) + i965_release_buffer_store(&obj_context->codec_state.encode.misc_param[i]); + + i965_release_buffer_store(&obj_context->codec_state.encode.seq_param_ext); + } } else { obj_context->codec_state.decode.current_render_target = render_target; i965_release_buffer_store(&obj_context->codec_state.decode.pic_param); @@ -2978,6 +3111,7 @@ /* extended buffer */ DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(sequence_parameter_ext, seq_param_ext) DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_parameter_ext, pic_param_ext) +DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(encmb_map, encmb_map) #define DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(encode, name, member) // DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params) @@ -3151,10 +3285,14 @@ vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER; return vaStatus; } + if (encode->last_packed_header_type == VAEncPackedHeaderRawData || encode->last_packed_header_type == VAEncPackedHeaderSlice) { vaStatus = I965_RENDER_ENCODE_BUFFER(packed_header_data_ext); + if (obj_config->profile == VAProfileVP9Profile0) + break; + /* When the PACKED_SLICE_HEADER flag is passed, it will use * the packed_slice_header as the delimeter to decide how * the packed rawdata is inserted for the given slice. @@ -3249,6 +3387,10 @@ obj_buffer); break; + case VAEncMacroblockMapBufferType: + vaStatus = I965_RENDER_ENCODE_BUFFER(encmb_map); + break; + default: vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE; break; @@ -3319,7 +3461,8 @@ if (VAEntrypointVideoProc == obj_config->entrypoint) { vaStatus = i965_proc_render_picture(ctx, context, buffers, num_buffers); } else if ((VAEntrypointEncSlice == obj_config->entrypoint ) || - (VAEntrypointEncPicture == obj_config->entrypoint)) { + (VAEntrypointEncPicture == obj_config->entrypoint) || + (VAEntrypointEncSliceLP == obj_config->entrypoint)) { vaStatus = i965_encoder_render_picture(ctx, context, buffers, num_buffers); } else { vaStatus = i965_decoder_render_picture(ctx, context, buffers, num_buffers); @@ -3342,7 +3485,10 @@ if (obj_context->codec_type == CODEC_PROC) { ASSERT_RET(VAEntrypointVideoProc == obj_config->entrypoint, VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT); } else if (obj_context->codec_type == CODEC_ENC) { - ASSERT_RET(((VAEntrypointEncSlice == obj_config->entrypoint) || (VAEntrypointEncPicture == obj_config->entrypoint)), VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT); + ASSERT_RET(((VAEntrypointEncSlice == obj_config->entrypoint) || + (VAEntrypointEncPicture == obj_config->entrypoint) || + (VAEntrypointEncSliceLP == obj_config->entrypoint)), + VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT); if (obj_context->codec_state.encode.num_packed_header_params_ext != obj_context->codec_state.encode.num_packed_header_data_ext) { @@ -3356,11 +3502,14 @@ if (!(obj_context->codec_state.encode.seq_param || obj_context->codec_state.encode.seq_param_ext) && (VAEntrypointEncPicture != obj_config->entrypoint)) { - return VA_STATUS_ERROR_INVALID_PARAMETER; + /* The seq_param is not mandatory for VP9 encoding */ + if (obj_config->profile != VAProfileVP9Profile0) + return VA_STATUS_ERROR_INVALID_PARAMETER; } if ((obj_context->codec_state.encode.num_slice_params <=0) && (obj_context->codec_state.encode.num_slice_params_ext <=0) && - (obj_config->profile != VAProfileVP8Version0_3)) { + ((obj_config->profile != VAProfileVP8Version0_3) && + (obj_config->profile != VAProfileVP9Profile0))) { return VA_STATUS_ERROR_INVALID_PARAMETER; } @@ -3759,6 +3908,14 @@ image->offsets[0] = 0; image->data_size = size * 2; break; + case VA_FOURCC_P010: + image->num_planes = 2; + image->pitches[0] = awidth * 2; + image->offsets[0] = 0; + image->pitches[1] = awidth * 2; + image->offsets[1] = size * 2; + image->data_size = size * 2 + 2 * size2 * 2; + break; default: goto error; } @@ -3819,22 +3976,22 @@ int bpp_1stplane = bpp_1stplane_by_fourcc(fourcc); - if (obj_surface->user_h_stride_set) { - ASSERT_RET(IS_ALIGNED(obj_surface->width, 128), VA_STATUS_ERROR_INVALID_PARAMETER); - } else - obj_surface->width = ALIGN(obj_surface->orig_width * bpp_1stplane, 128); - - if (obj_surface->user_v_stride_set) { - ASSERT_RET(IS_ALIGNED(obj_surface->height, 32), VA_STATUS_ERROR_INVALID_PARAMETER); - } else - obj_surface->height = ALIGN(obj_surface->orig_height, 32); - if ((tiled && !obj_surface->user_disable_tiling)) { ASSERT_RET(fourcc != VA_FOURCC_I420 && fourcc != VA_FOURCC_IYUV && fourcc != VA_FOURCC_YV12, VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT); + if (obj_surface->user_h_stride_set) { + ASSERT_RET(IS_ALIGNED(obj_surface->width, 128), VA_STATUS_ERROR_INVALID_PARAMETER); + } else + obj_surface->width = ALIGN(obj_surface->orig_width * bpp_1stplane, 128); + + if (obj_surface->user_v_stride_set) { + ASSERT_RET(IS_ALIGNED(obj_surface->height, 32), VA_STATUS_ERROR_INVALID_PARAMETER); + }else + obj_surface->height = ALIGN(obj_surface->orig_height, 32); + region_height = obj_surface->height; switch (fourcc) { @@ -5268,7 +5425,8 @@ IS_GEN8(i965->intel.device_info) || IS_GEN9(i965->intel.device_info)) { if (obj_config->entrypoint == VAEntrypointEncSlice || - obj_config->entrypoint == VAEntrypointVideoProc) { + obj_config->entrypoint == VAEntrypointVideoProc || + obj_config->entrypoint == VAEntrypointEncSliceLP) { switch (attrib_list[i].value.value.i) { case VA_FOURCC_NV12: case VA_FOURCC_I420: @@ -5618,7 +5776,8 @@ i++; } } else if (obj_config->entrypoint == VAEntrypointEncSlice || /* encode */ - obj_config->entrypoint == VAEntrypointVideoProc) { /* vpp */ + obj_config->entrypoint == VAEntrypointVideoProc || + obj_config->entrypoint == VAEntrypointEncSliceLP) { if (obj_config->profile == VAProfileHEVCMain10) { attribs[i].type = VASurfaceAttribPixelFormat; @@ -5688,6 +5847,14 @@ attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE; attribs[i].value.value.i = VA_FOURCC_YV16; i++; + + if(HAS_VPP_P010(i965)) { + attribs[i].type = VASurfaceAttribPixelFormat; + attribs[i].value.type = VAGenericValueTypeInteger; + attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE; + attribs[i].value.value.i = VA_FOURCC_P010; + i++; + } } } } @@ -6314,6 +6481,11 @@ VAStatus va_status = VA_STATUS_SUCCESS; bool driver_loaded = false; + if (HAS_VP9_DECODING(i965)) { + i965->wrapper_pdrvctx = NULL; + return va_status; + } + wrapper_pdrvctx = calloc(1, sizeof(*wrapper_pdrvctx)); vtable = calloc(1, sizeof(*vtable)); diff -Nru intel-vaapi-driver-1.6.2/src/i965_drv_video.h intel-vaapi-driver-1.7.1/src/i965_drv_video.h --- intel-vaapi-driver-1.6.2/src/i965_drv_video.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_drv_video.h 2016-06-21 01:35:12.000000000 +0000 @@ -47,7 +47,7 @@ #define I965_MAX_PROFILES 20 #define I965_MAX_ENTRYPOINTS 5 -#define I965_MAX_CONFIG_ATTRIBUTES 10 +#define I965_MAX_CONFIG_ATTRIBUTES 32 #define I965_MAX_IMAGE_FORMATS 10 #define I965_MAX_SUBPIC_FORMATS 6 #define I965_MAX_SUBPIC_SUM 4 @@ -73,6 +73,8 @@ #define ENCODER_HIGH_QUALITY ENCODER_DEFAULT_QUALITY #define ENCODER_LOW_QUALITY 2 +#define ENCODER_LP_QUALITY_RANGE 8 + struct i965_surface { struct object_base *base; @@ -157,6 +159,7 @@ struct buffer_store *packed_header_param[5]; struct buffer_store *packed_header_data[5]; struct buffer_store **slice_params_ext; + struct buffer_store *encmb_map; int max_slice_params_ext; int num_slice_params_ext; @@ -231,6 +234,9 @@ union codec_state *codec_state, struct hw_context *hw_context); void (*destroy)(void *); + VAStatus (*get_status)(VADriverContextP ctx, + struct hw_context *hw_context, + void *buffer); struct intel_batchbuffer *batch; }; @@ -309,6 +315,7 @@ VABufferInfo export_state; VAGenericID wrapper_buffer; + VAContextID context_id; }; struct object_image @@ -362,10 +369,13 @@ int min_linear_hpitch; unsigned int h264_mvc_dec_profiles; + unsigned int vp9_dec_profiles; + unsigned int h264_dec_chroma_formats; unsigned int jpeg_dec_chroma_formats; unsigned int jpeg_enc_chroma_formats; unsigned int hevc_dec_chroma_formats; + unsigned int vp9_dec_chroma_formats; unsigned int has_mpeg2_decoding:1; unsigned int has_mpeg2_encoding:1; @@ -388,6 +398,11 @@ unsigned int has_hevc_encoding:1; unsigned int has_hevc10_decoding:1; unsigned int has_vp9_decoding:1; + unsigned int has_vpp_p010:1; + unsigned int has_lp_h264_encoding:1; + unsigned int has_vp9_encoding:1; + + unsigned int lp_h264_brc_mode; unsigned int num_filters; struct i965_filter filters[VAProcFilterCount]; @@ -476,6 +491,7 @@ #define CODEC_JPEG 3 #define CODEC_VP8 4 #define CODEC_HEVC 5 +#define CODEC_VP9 6 #define H264_DELIMITER0 0x00 #define H264_DELIMITER1 0x00 @@ -497,9 +513,17 @@ struct i965_coded_buffer_segment { - VACodedBufferSegment base; - unsigned char mapped; - unsigned char codec; + union { + VACodedBufferSegment base; + unsigned char pad0[64]; /* change the size if sizeof(VACodedBufferSegment) > 64 */ + }; + + unsigned int mapped; + unsigned int codec; + unsigned int status_support; + unsigned int pad1; + + unsigned int codec_private_data[512]; /* Store codec private data, must be 16-bytes aligned */ }; #define I965_CODEDBUFFER_HEADER_SIZE ALIGN(sizeof(struct i965_coded_buffer_segment), 0x1000) diff -Nru intel-vaapi-driver-1.6.2/src/i965_encoder.c intel-vaapi-driver-1.7.1/src/i965_encoder.c --- intel-vaapi-driver-1.6.2/src/i965_encoder.c 2015-12-15 05:27:56.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_encoder.c 2016-06-17 01:56:44.000000000 +0000 @@ -40,6 +40,9 @@ #include "gen6_vme.h" #include "gen6_mfc.h" #include "gen9_mfc.h" +#include "gen9_vdenc.h" + +#include "gen9_vp9_encapi.h" extern Bool gen6_mfc_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); extern Bool gen6_vme_context_init(VADriverContextP ctx, struct intel_encoder_context *encoder_context); @@ -557,6 +560,76 @@ error: return VA_STATUS_ERROR_INVALID_PARAMETER; } + +static VAStatus +intel_encoder_check_vp9_parameter(VADriverContextP ctx, + struct encode_state *encode_state, + struct intel_encoder_context *encoder_context) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + VAEncPictureParameterBufferVP9 *pic_param; + struct object_surface *obj_surface; + struct object_buffer *obj_buffer; + int i = 0; + int is_key_frame = 0; + int index; + + if (encode_state->pic_param_ext == NULL || + encode_state->pic_param_ext->buffer == NULL) + return VA_STATUS_ERROR_INVALID_PARAMETER; + + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; + + obj_surface = SURFACE(pic_param->reconstructed_frame); + + if (!obj_surface) + goto error; + + encode_state->reconstructed_object = obj_surface; + obj_buffer = BUFFER(pic_param->coded_buf); + + if (!obj_buffer || !obj_buffer->buffer_store || !obj_buffer->buffer_store->bo) + goto error; + + encode_state->coded_buf_object = obj_buffer; + + is_key_frame = !pic_param->pic_flags.bits.frame_type; + if (!is_key_frame && !pic_param->pic_flags.bits.intra_only) { + /* slot 0 is for last reference frame */ + index = pic_param->ref_flags.bits.ref_last_idx; + obj_surface = SURFACE(pic_param->reference_frames[index]); + if (obj_surface && obj_surface->bo) + encode_state->reference_objects[i++] = obj_surface; + else + encode_state->reference_objects[i++] = NULL; + + /* slot 1 is for golden reference frame */ + index = pic_param->ref_flags.bits.ref_gf_idx; + obj_surface = SURFACE(pic_param->reference_frames[index]); + if (obj_surface && obj_surface->bo) + encode_state->reference_objects[i++] = obj_surface; + else + encode_state->reference_objects[i++] = NULL; + + /* slot 2 is alt reference frame */ + index = pic_param->ref_flags.bits.ref_arf_idx; + obj_surface = SURFACE(pic_param->reference_frames[index]); + if (obj_surface && obj_surface->bo) + encode_state->reference_objects[i++] = obj_surface; + else + encode_state->reference_objects[i++] = NULL; + } + + for ( ; i < 16; i++) + encode_state->reference_objects[i] = NULL; + + return VA_STATUS_SUCCESS; + +error: + return VA_STATUS_ERROR_INVALID_PARAMETER; +} + + static VAStatus intel_encoder_sanity_check_input(VADriverContextP ctx, VAProfile profile, @@ -610,6 +683,13 @@ vaStatus = intel_encoder_check_yuv_surface(ctx, profile, encode_state, encoder_context); break; } + + case VAProfileVP9Profile0: { + vaStatus = intel_encoder_check_vp9_parameter(ctx, encode_state, encoder_context); + if (vaStatus != VA_STATUS_SUCCESS) + goto out; + break; + } default: vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE; break; @@ -658,10 +738,28 @@ if (encoder_context->vme_context_destroy && encoder_context->vme_context) encoder_context->vme_context_destroy(encoder_context->vme_context); + if (encoder_context->enc_priv_state) { + free(encoder_context->enc_priv_state); + encoder_context->enc_priv_state = NULL; + } + intel_batchbuffer_free(encoder_context->base.batch); free(encoder_context); } + +static VAStatus +intel_encoder_get_status(VADriverContextP ctx, struct hw_context *hw_context, void *buffer) +{ + struct intel_encoder_context *encoder_context = (struct intel_encoder_context *)hw_context; + struct i965_coded_buffer_segment *coded_buffer_segment = (struct i965_coded_buffer_segment *)buffer; + + if (encoder_context->get_status) + return encoder_context->get_status(ctx, encoder_context, coded_buffer_segment); + + return VA_STATUS_ERROR_UNIMPLEMENTED; +} + typedef Bool (* hw_init_func)(VADriverContextP, struct intel_encoder_context *); static struct hw_context * @@ -677,9 +775,11 @@ assert(encoder_context); encoder_context->base.destroy = intel_encoder_context_destroy; encoder_context->base.run = intel_encoder_end_picture; + encoder_context->base.get_status = intel_encoder_get_status; encoder_context->base.batch = intel_batchbuffer_new(intel, I915_EXEC_RENDER, 0); encoder_context->input_yuv_surface = VA_INVALID_SURFACE; encoder_context->is_tmp_id = 0; + encoder_context->low_power_mode = 0; encoder_context->rate_control_mode = VA_RC_NONE; encoder_context->quality_level = ENCODER_DEFAULT_QUALITY; encoder_context->quality_range = 1; @@ -694,7 +794,11 @@ case VAProfileH264Main: case VAProfileH264High: encoder_context->codec = CODEC_H264; - encoder_context->quality_range = ENCODER_QUALITY_RANGE; + + if (obj_config->entrypoint == VAEntrypointEncSliceLP) + encoder_context->quality_range = ENCODER_LP_QUALITY_RANGE; + else + encoder_context->quality_range = ENCODER_QUALITY_RANGE; break; case VAProfileH264StereoHigh: @@ -714,6 +818,10 @@ encoder_context->codec = CODEC_HEVC; break; + case VAProfileVP9Profile0: + encoder_context->codec = CODEC_VP9; + break; + default: /* Never get here */ assert(0); @@ -734,11 +842,16 @@ } } - vme_context_init(ctx, encoder_context); - if(obj_config->profile != VAProfileJPEGBaseline) { - assert(encoder_context->vme_context); - assert(encoder_context->vme_context_destroy); - assert(encoder_context->vme_pipeline); + if (vme_context_init) { + vme_context_init(ctx, encoder_context); + + if (obj_config->profile != VAProfileJPEGBaseline) { + assert(encoder_context->vme_context); + assert(encoder_context->vme_context_destroy); + assert(encoder_context->vme_pipeline); + } + } else { + encoder_context->low_power_mode = 1; } mfc_context_init(ctx, encoder_context); @@ -777,10 +890,18 @@ struct hw_context * gen9_enc_hw_context_init(VADriverContextP ctx, struct object_config *obj_config) { - if (obj_config->profile == VAProfileHEVCMain) { - return intel_enc_hw_context_init(ctx, obj_config, gen9_vme_context_init, gen9_hcpe_context_init); - } else if (obj_config->profile == VAProfileJPEGBaseline) - return intel_enc_hw_context_init(ctx, obj_config, gen8_vme_context_init, gen8_mfc_context_init); - else - return intel_enc_hw_context_init(ctx, obj_config, gen9_vme_context_init, gen9_mfc_context_init); + if (obj_config->entrypoint == VAEntrypointEncSliceLP) { + return intel_enc_hw_context_init(ctx, obj_config, NULL, gen9_vdenc_context_init); + } else { + if (obj_config->profile == VAProfileHEVCMain) { + return intel_enc_hw_context_init(ctx, obj_config, gen9_vme_context_init, gen9_hcpe_context_init); + } else if (obj_config->profile == VAProfileJPEGBaseline) + return intel_enc_hw_context_init(ctx, obj_config, gen8_vme_context_init, gen8_mfc_context_init); + else if (obj_config->profile == VAProfileVP9Profile0) + return intel_enc_hw_context_init(ctx, obj_config, + gen9_vp9_vme_context_init, + gen9_vp9_pak_context_init); + else + return intel_enc_hw_context_init(ctx, obj_config, gen9_vme_context_init, gen9_mfc_context_init); + } } diff -Nru intel-vaapi-driver-1.6.2/src/i965_encoder.h intel-vaapi-driver-1.7.1/src/i965_encoder.h --- intel-vaapi-driver-1.6.2/src/i965_encoder.h 2015-12-15 05:27:56.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_encoder.h 2016-06-17 01:56:44.000000000 +0000 @@ -36,17 +36,36 @@ #include "i965_structs.h" #include "i965_drv_video.h" +#define I965_BRC_NONE 0 +#define I965_BRC_CBR 1 +#define I965_BRC_VBR 2 +#define I965_BRC_CQP 3 + +struct intel_roi +{ + short left; + short right; + short top; + short bottom; + + char value; +}; + struct intel_encoder_context { struct hw_context base; int codec; VASurfaceID input_yuv_surface; - int is_tmp_id; unsigned int rate_control_mode; unsigned int quality_level; unsigned int quality_range; void *vme_context; void *mfc_context; + void *enc_priv_state; + + unsigned int is_tmp_id:1; + unsigned int low_power_mode:1; + void (*vme_context_destroy)(void *vme_context); VAStatus (*vme_pipeline)(VADriverContextP ctx, VAProfile profile, @@ -59,6 +78,10 @@ struct intel_encoder_context *encoder_context); void (*mfc_brc_prepare)(struct encode_state *encode_state, struct intel_encoder_context *encoder_context); + + VAStatus (*get_status)(VADriverContextP ctx, + struct intel_encoder_context *encoder_context, + struct i965_coded_buffer_segment *coded_buffer_segment); }; extern struct hw_context * diff -Nru intel-vaapi-driver-1.6.2/src/i965_encoder_utils.c intel-vaapi-driver-1.7.1/src/i965_encoder_utils.c --- intel-vaapi-driver-1.6.2/src/i965_encoder_utils.c 2015-12-15 05:27:56.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_encoder_utils.c 2016-06-16 00:57:46.000000000 +0000 @@ -1134,3 +1134,56 @@ *header_buffer = (unsigned char *)bs.buffer; return bs.bit_offset; } + +int +intel_avc_find_skipemulcnt(unsigned char *buf, int bits_length) +{ + int i, found; + int leading_zero_cnt, byte_length, zero_byte; + int nal_unit_type; + int skip_cnt = 0; + +#define NAL_UNIT_TYPE_MASK 0x1f +#define HW_MAX_SKIP_LENGTH 15 + + byte_length = ALIGN(bits_length, 32) >> 3; + + + leading_zero_cnt = 0; + found = 0; + for(i = 0; i < byte_length - 4; i++) { + if (((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1)) || + ((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 0) && (buf[i + 3] == 1))) { + found = 1; + break; + } + leading_zero_cnt++; + } + if (!found) { + /* warning message is complained. But anyway it will be inserted. */ + WARN_ONCE("Invalid packed header data. " + "Can't find the 000001 start_prefix code\n"); + return 0; + } + i = leading_zero_cnt; + + zero_byte = 0; + if (!((buf[i] == 0) && (buf[i + 1] == 0) && (buf[i + 2] == 1))) + zero_byte = 1; + + skip_cnt = leading_zero_cnt + zero_byte + 3; + + /* the unit header byte is accounted */ + nal_unit_type = (buf[skip_cnt]) & NAL_UNIT_TYPE_MASK; + skip_cnt += 1; + + if (nal_unit_type == 14 || nal_unit_type == 20 || nal_unit_type == 21) { + /* more unit header bytes are accounted for MVC/SVC */ + skip_cnt += 3; + } + if (skip_cnt > HW_MAX_SKIP_LENGTH) { + WARN_ONCE("Too many leading zeros are padded for packed data. " + "It is beyond the HW range.!!!\n"); + } + return skip_cnt; +} diff -Nru intel-vaapi-driver-1.6.2/src/i965_encoder_utils.h intel-vaapi-driver-1.7.1/src/i965_encoder_utils.h --- intel-vaapi-driver-1.6.2/src/i965_encoder_utils.h 2015-12-15 05:27:56.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_encoder_utils.h 2016-06-16 00:57:46.000000000 +0000 @@ -62,4 +62,7 @@ unsigned int dpb_output_delay, unsigned char **sei_buffer); +int +intel_avc_find_skipemulcnt(unsigned char *buf, int bits_length); + #endif /* __I965_ENCODER_UTILS_H__ */ diff -Nru intel-vaapi-driver-1.6.2/src/i965_gpe_utils.c intel-vaapi-driver-1.7.1/src/i965_gpe_utils.c --- intel-vaapi-driver-1.6.2/src/i965_gpe_utils.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_gpe_utils.c 2016-06-21 01:35:12.000000000 +0000 @@ -734,7 +734,8 @@ memset(ss, 0, sizeof(*ss)); /* ss0 */ - ss->ss6.base_addr = obj_surface->bo->offset; + ss->ss6.base_addr = (uint32_t)obj_surface->bo->offset64; + ss->ss7.base_addr_high = (uint32_t)(obj_surface->bo->offset64 >> 32); /* ss1 */ ss->ss1.cbcr_pixel_offset_v_direction = 2; ss->ss1.width = w - 1; @@ -794,7 +795,8 @@ ss->ss0.surface_type = I965_SURFACE_2D; ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM; /* ss1 */ - ss->ss8.base_addr = obj_surface->bo->offset; + ss->ss8.base_addr = (uint32_t)obj_surface->bo->offset64; + ss->ss9.base_addr_high = (uint32_t)(obj_surface->bo->offset64 >> 32); /* ss2 */ ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */ ss->ss2.height = h - 1; @@ -811,6 +813,7 @@ int w, w_pitch; unsigned int tiling, swizzle; int cbcr_offset; + uint64_t base_offset; dri_bo_get_tiling(obj_surface->bo, &tiling, &swizzle); w = obj_surface->orig_width; @@ -822,7 +825,9 @@ ss->ss0.surface_type = I965_SURFACE_2D; ss->ss0.surface_format = I965_SURFACEFORMAT_R8_UNORM; /* ss1 */ - ss->ss8.base_addr = obj_surface->bo->offset + cbcr_offset; + base_offset = obj_surface->bo->offset64 + cbcr_offset; + ss->ss8.base_addr = (uint32_t) base_offset; + ss->ss9.base_addr_high = (uint32_t) (base_offset >> 32); /* ss2 */ ss->ss2.width = w / 4 - 1; /* in DWORDs for media read & write message */ ss->ss2.height = (obj_surface->height / 2) -1; @@ -901,7 +906,8 @@ /* ss0 */ ss->ss0.surface_type = I965_SURFACE_BUFFER; /* ss1 */ - ss->ss8.base_addr = buffer_surface->bo->offset; + ss->ss8.base_addr = (uint32_t)buffer_surface->bo->offset64; + ss->ss9.base_addr_high = (uint32_t)(buffer_surface->bo->offset64 >> 32); /* ss2 */ ss->ss2.width = ((num_entries - 1) & 0x7f); ss->ss2.height = (((num_entries - 1) >> 7) & 0x3fff); @@ -950,38 +956,39 @@ OUT_BATCH(batch, 0); /*DW4 Surface state base address */ - OUT_RELOC(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */ - OUT_BATCH(batch, 0); + OUT_RELOC64(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */ /*DW6. Dynamic state base address */ if (gpe_context->dynamic_state.bo) - OUT_RELOC(batch, gpe_context->dynamic_state.bo, + OUT_RELOC64(batch, gpe_context->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER, 0, BASE_ADDRESS_MODIFY); - else + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(batch, 0); + } - OUT_BATCH(batch, 0); /*DW8. Indirect Object base address */ if (gpe_context->indirect_state.bo) - OUT_RELOC(batch, gpe_context->indirect_state.bo, + OUT_RELOC64(batch, gpe_context->indirect_state.bo, I915_GEM_DOMAIN_SAMPLER, 0, BASE_ADDRESS_MODIFY); - else + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(batch, 0); + } - OUT_BATCH(batch, 0); /*DW10. Instruct base address */ if (gpe_context->instruction_state.bo) - OUT_RELOC(batch, gpe_context->instruction_state.bo, + OUT_RELOC64(batch, gpe_context->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); - else + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); - - OUT_BATCH(batch, 0); + OUT_BATCH(batch, 0); + } /* DW12. Size limitation */ OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound @@ -1218,38 +1225,40 @@ OUT_BATCH(batch, 0); /*DW4 Surface state base address */ - OUT_RELOC(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */ - OUT_BATCH(batch, 0); + OUT_RELOC64(batch, gpe_context->surface_state_binding_table.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */ /*DW6. Dynamic state base address */ if (gpe_context->dynamic_state.bo) - OUT_RELOC(batch, gpe_context->dynamic_state.bo, + OUT_RELOC64(batch, gpe_context->dynamic_state.bo, I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_SAMPLER, - 0, BASE_ADDRESS_MODIFY); - else + I915_GEM_DOMAIN_RENDER, BASE_ADDRESS_MODIFY); + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(batch, 0); + } - OUT_BATCH(batch, 0); /*DW8. Indirect Object base address */ if (gpe_context->indirect_state.bo) - OUT_RELOC(batch, gpe_context->indirect_state.bo, + OUT_RELOC64(batch, gpe_context->indirect_state.bo, I915_GEM_DOMAIN_SAMPLER, 0, BASE_ADDRESS_MODIFY); - else + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(batch, 0); + } - OUT_BATCH(batch, 0); /*DW10. Instruct base address */ if (gpe_context->instruction_state.bo) - OUT_RELOC(batch, gpe_context->instruction_state.bo, + OUT_RELOC64(batch, gpe_context->instruction_state.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); - else + else { OUT_BATCH(batch, 0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(batch, 0); + } - OUT_BATCH(batch, 0); /* DW12. Size limitation */ OUT_BATCH(batch, 0xFFFFF000 | BASE_ADDRESS_MODIFY); //General State Access Upper Bound @@ -1308,3 +1317,739 @@ GEN9_FORCE_MEDIA_AWAKE_MASK); ADVANCE_BATCH(batch); } + +Bool +i965_allocate_gpe_resource(dri_bufmgr *bufmgr, + struct i965_gpe_resource *res, + int size, + const char *name) +{ + if (!res || !size) + return false; + + res->size = size; + res->bo = dri_bo_alloc(bufmgr, name, res->size, 4096); + res->map = NULL; + + return (res->bo != NULL); +} + +void +i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res, + struct object_surface *obj_surface) +{ + unsigned int swizzle; + + res->type = I965_GPE_RESOURCE_2D; + res->width = obj_surface->orig_width; + res->height = obj_surface->orig_height; + res->pitch = obj_surface->width; + res->size = obj_surface->size; + res->cb_cr_pitch = obj_surface->cb_cr_pitch; + res->x_cb_offset = obj_surface->x_cb_offset; + res->y_cb_offset = obj_surface->y_cb_offset; + res->bo = obj_surface->bo; + res->map = NULL; + + dri_bo_reference(res->bo); + dri_bo_get_tiling(obj_surface->bo, &res->tiling, &swizzle); +} + +void +i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res, + dri_bo *bo) +{ + unsigned int swizzle; + + res->type = I965_GPE_RESOURCE_BUFFER; + res->width = bo->size; + res->height = 1; + res->pitch = res->width; + res->size = res->pitch * res->width; + res->bo = bo; + res->map = NULL; + + dri_bo_reference(res->bo); + dri_bo_get_tiling(res->bo, &res->tiling, &swizzle); +} + +void +i965_gpe_dri_object_to_2d_gpe_resource(struct i965_gpe_resource *res, + dri_bo *bo, + unsigned int width, + unsigned int height, + unsigned int pitch) +{ + unsigned int swizzle; + + res->type = I965_GPE_RESOURCE_2D; + res->width = width; + res->height = height; + res->pitch = pitch; + res->size = res->pitch * res->width; + res->bo = bo; + res->map = NULL; + + dri_bo_reference(res->bo); + dri_bo_get_tiling(res->bo, &res->tiling, &swizzle); +} + +void +i965_zero_gpe_resource(struct i965_gpe_resource *res) +{ + if (res->bo) { + dri_bo_map(res->bo, 1); + memset(res->bo->virtual, 0, res->size); + dri_bo_unmap(res->bo); + } +} + +void +i965_free_gpe_resource(struct i965_gpe_resource *res) +{ + dri_bo_unreference(res->bo); + res->bo = NULL; + res->map = NULL; +} + +void * +i965_map_gpe_resource(struct i965_gpe_resource *res) +{ + int ret; + + if (res->bo) { + ret = dri_bo_map(res->bo, 1); + + if (ret == 0) + res->map = res->bo->virtual; + else + res->map = NULL; + } else + res->map = NULL; + + return res->map; +} + +void +i965_unmap_gpe_resource(struct i965_gpe_resource *res) +{ + if (res->bo && res->map) + dri_bo_unmap(res->bo); + + res->map = NULL; +} + +void +gen9_gpe_mi_flush_dw(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_flush_dw_parameter *params) +{ + int video_pipeline_cache_invalidate = 0; + int post_sync_operation = MI_FLUSH_DW_NOWRITE; + + if (params->video_pipeline_cache_invalidate) + video_pipeline_cache_invalidate = MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE; + + if (params->bo) + post_sync_operation = MI_FLUSH_DW_WRITE_QWORD; + + __OUT_BATCH(batch, (MI_FLUSH_DW2 | + video_pipeline_cache_invalidate | + post_sync_operation | + (5 - 2))); /* Always use PPGTT */ + + if (params->bo) { + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + params->offset); + } else { + __OUT_BATCH(batch, 0); + __OUT_BATCH(batch, 0); + } + + __OUT_BATCH(batch, params->dw0); + __OUT_BATCH(batch, params->dw1); +} + +void +gen9_gpe_mi_store_data_imm(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_store_data_imm_parameter *params) +{ + if (params->is_qword) { + __OUT_BATCH(batch, MI_STORE_DATA_IMM | + (1 << 21) | + (5 - 2)); /* Always use PPGTT */ + } else { + __OUT_BATCH(batch, MI_STORE_DATA_IMM | (4 - 2)); /* Always use PPGTT */ + } + + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + params->offset); + __OUT_BATCH(batch, params->dw0); + + if (params->is_qword) + __OUT_BATCH(batch, params->dw1); +} + +void +gen9_gpe_mi_store_register_mem(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_store_register_mem_parameter *params) +{ + __OUT_BATCH(batch, (MI_STORE_REGISTER_MEM | (4 - 2))); /* Always use PPGTT */ + __OUT_BATCH(batch, params->mmio_offset); + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + params->offset); +} + +void +gen9_gpe_mi_load_register_mem(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_mem_parameter *params) +{ + __OUT_BATCH(batch, (MI_LOAD_REGISTER_MEM | (4 - 2))); /* Always use PPGTT */ + __OUT_BATCH(batch, params->mmio_offset); + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + params->offset); +} + +void +gen9_gpe_mi_load_register_imm(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_imm_parameter *params) +{ + __OUT_BATCH(batch, (MI_LOAD_REGISTER_IMM | (3 - 2))); + __OUT_BATCH(batch, params->mmio_offset); + __OUT_BATCH(batch, params->data); +} + +void +gen9_gpe_mi_load_register_reg(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_reg_parameter *params) +{ + __OUT_BATCH(batch, (MI_LOAD_REGISTER_REG | (3 - 2))); + __OUT_BATCH(batch, params->src_mmio_offset); + __OUT_BATCH(batch, params->dst_mmio_offset); +} + +void +gen9_gpe_mi_math(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_math_parameter *params) +{ + __OUT_BATCH(batch, (MI_MATH | (params->num_instructions - 1))); + intel_batchbuffer_data(batch, params->instruction_list, params->num_instructions * 4); +} + +void +gen9_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_conditional_batch_buffer_end_parameter *params) +{ + int compare_mask_mode_enabled = MI_COMPARE_MASK_MODE_ENANBLED; + + if (params->compare_mask_mode_disabled) + compare_mask_mode_enabled = 0; + + __OUT_BATCH(batch, (MI_CONDITIONAL_BATCH_BUFFER_END | + (1 << 21) | + compare_mask_mode_enabled | + (4 - 2))); /* Always use PPGTT */ + __OUT_BATCH(batch, params->compare_data); + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0, + params->offset); +} + +void +gen9_gpe_mi_batch_buffer_start(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_batch_buffer_start_parameter *params) +{ + __OUT_BATCH(batch, (MI_BATCH_BUFFER_START | + (!!params->is_second_level << 22) | + (!params->use_global_gtt << 8) | + (1 << 0))); + __OUT_RELOC64(batch, + params->bo, + I915_GEM_DOMAIN_RENDER | I915_GEM_DOMAIN_INSTRUCTION, 0, + params->offset); +} + +void +gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct gpe_dynamic_state_parameter *ds) +{ + if (!ds->bo || !gpe_context) + return; + + dri_bo_unreference(gpe_context->dynamic_state.bo); + gpe_context->dynamic_state.bo = ds->bo; + dri_bo_reference(gpe_context->dynamic_state.bo); + gpe_context->dynamic_state.bo_size = ds->bo_size; + + gpe_context->curbe_offset = ds->curbe_offset; + gpe_context->idrt_offset = ds->idrt_offset; + gpe_context->sampler_offset = ds->sampler_offset; + + return; +} + +void * +gen8p_gpe_context_map_curbe(struct i965_gpe_context *gpe_context) +{ + dri_bo_map(gpe_context->dynamic_state.bo, 1); + + return (char *)gpe_context->dynamic_state.bo->virtual + gpe_context->curbe_offset; +} + +void +gen8p_gpe_context_unmap_curbe(struct i965_gpe_context *gpe_context) +{ + dri_bo_unmap(gpe_context->dynamic_state.bo); +} + +void +gen9_gpe_reset_binding_table(VADriverContextP ctx, + struct i965_gpe_context *gpe_context) +{ + unsigned int *binding_table; + unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset; + int i; + + dri_bo_map(gpe_context->surface_state_binding_table.bo, 1); + binding_table = (unsigned int*)((char *)gpe_context->surface_state_binding_table.bo->virtual + binding_table_offset); + + for (i = 0; i < gpe_context->surface_state_binding_table.max_entries; i++) { + *(binding_table + i) = gpe_context->surface_state_binding_table.surface_state_offset + i * SURFACE_STATE_PADDED_SIZE_GEN9; + } + + dri_bo_unmap(gpe_context->surface_state_binding_table.bo); +} + +void +gen8_gpe_setup_interface_data(VADriverContextP ctx, + struct i965_gpe_context *gpe_context) +{ + struct gen8_interface_descriptor_data *desc; + int i; + dri_bo *bo; + unsigned char *desc_ptr; + + bo = gpe_context->dynamic_state.bo; + dri_bo_map(bo, 1); + assert(bo->virtual); + desc_ptr = (unsigned char *)bo->virtual + gpe_context->idrt_offset; + desc = (struct gen8_interface_descriptor_data *)desc_ptr; + + for (i = 0; i < gpe_context->num_kernels; i++) { + struct i965_kernel *kernel; + + kernel = &gpe_context->kernels[i]; + assert(sizeof(*desc) == 32); + + /*Setup the descritor table*/ + memset(desc, 0, sizeof(*desc)); + desc->desc0.kernel_start_pointer = kernel->kernel_offset >> 6; + desc->desc3.sampler_count = 0; + desc->desc3.sampler_state_pointer = gpe_context->sampler_offset; + desc->desc4.binding_table_entry_count = 0; + desc->desc4.binding_table_pointer = (gpe_context->surface_state_binding_table.binding_table_offset >> 5); + desc->desc5.constant_urb_entry_read_offset = 0; + desc->desc5.constant_urb_entry_read_length = ALIGN(gpe_context->curbe.length, 32) >> 5; // in registers + + desc++; + } + + dri_bo_unmap(bo); +} + +static void +gen9_gpe_set_surface_tiling(struct gen9_surface_state *ss, unsigned int tiling) +{ + switch (tiling) { + case I915_TILING_NONE: + ss->ss0.tiled_surface = 0; + ss->ss0.tile_walk = 0; + break; + case I915_TILING_X: + ss->ss0.tiled_surface = 1; + ss->ss0.tile_walk = I965_TILEWALK_XMAJOR; + break; + case I915_TILING_Y: + ss->ss0.tiled_surface = 1; + ss->ss0.tile_walk = I965_TILEWALK_YMAJOR; + break; + } +} + +static void +gen9_gpe_set_surface2_tiling(struct gen9_surface_state2 *ss, unsigned int tiling) +{ + switch (tiling) { + case I915_TILING_NONE: + ss->ss2.tiled_surface = 0; + ss->ss2.tile_walk = 0; + break; + case I915_TILING_X: + ss->ss2.tiled_surface = 1; + ss->ss2.tile_walk = I965_TILEWALK_XMAJOR; + break; + case I915_TILING_Y: + ss->ss2.tiled_surface = 1; + ss->ss2.tile_walk = I965_TILEWALK_YMAJOR; + break; + } +} + +static void +gen9_gpe_set_2d_surface_state(struct gen9_surface_state *ss, + unsigned int cacheability_control, + unsigned int format, + unsigned int tiling, + unsigned int width, + unsigned int height, + unsigned int pitch, + uint64_t base_offset, + unsigned int y_offset) +{ + memset(ss, 0, sizeof(*ss)); + + /* Always set 1(align 4 mode) */ + ss->ss0.vertical_alignment = 1; + ss->ss0.horizontal_alignment = 1; + + ss->ss0.surface_format = format; + ss->ss0.surface_type = I965_SURFACE_2D; + + ss->ss1.surface_mocs = cacheability_control; + + ss->ss2.width = width - 1; + ss->ss2.height = height - 1; + + ss->ss3.pitch = pitch - 1; + + ss->ss5.y_offset = y_offset; + + ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA; + ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE; + ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN; + ss->ss7.shader_chanel_select_r = HSW_SCS_RED; + + ss->ss8.base_addr = (uint32_t)base_offset; + ss->ss9.base_addr_high = (uint32_t)(base_offset >> 32); + + gen9_gpe_set_surface_tiling(ss, tiling); +} + +/* This is only for NV12 format */ +static void +gen9_gpe_set_adv_surface_state(struct gen9_surface_state2 *ss, + unsigned int v_direction, + unsigned int cacheability_control, + unsigned int format, + unsigned int tiling, + unsigned int width, + unsigned int height, + unsigned int pitch, + uint64_t base_offset, + unsigned int y_cb_offset) +{ + memset(ss, 0, sizeof(*ss)); + + ss->ss1.cbcr_pixel_offset_v_direction = v_direction; + ss->ss1.width = width - 1; + ss->ss1.height = height - 1; + + ss->ss2.surface_format = format; + ss->ss2.interleave_chroma = 1; + ss->ss2.pitch = pitch - 1; + + ss->ss3.y_offset_for_cb = y_cb_offset; + + ss->ss5.surface_object_mocs = cacheability_control; + + ss->ss6.base_addr = (uint32_t)base_offset; + ss->ss7.base_addr_high = (uint32_t)(base_offset >> 32); + + gen9_gpe_set_surface2_tiling(ss, tiling); +} + +static void +gen9_gpe_set_buffer2_surface_state(struct gen9_surface_state *ss, + unsigned int cacheability_control, + unsigned int format, + unsigned int size, + unsigned int pitch, + uint64_t base_offset) +{ + memset(ss, 0, sizeof(*ss)); + + ss->ss0.surface_format = format; + ss->ss0.surface_type = I965_SURFACE_BUFFER; + + ss->ss1.surface_mocs = cacheability_control; + + ss->ss2.width = (size - 1) & 0x7F; + ss->ss2.height = ((size - 1) & 0x1FFF80) >> 7; + + ss->ss3.depth = ((size - 1) & 0xFE00000) >> 21; + ss->ss3.pitch = pitch - 1; + + ss->ss7.shader_chanel_select_a = HSW_SCS_ALPHA; + ss->ss7.shader_chanel_select_b = HSW_SCS_BLUE; + ss->ss7.shader_chanel_select_g = HSW_SCS_GREEN; + ss->ss7.shader_chanel_select_r = HSW_SCS_RED; + + ss->ss8.base_addr = (uint32_t)base_offset; + ss->ss9.base_addr_high = (uint32_t)(base_offset >> 32); +} + +void +gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context, + struct i965_gpe_surface *gpe_surface, + int index) +{ + char *buf; + unsigned int tiling, swizzle, width, height, pitch, tile_alignment, y_offset = 0; + unsigned int surface_state_offset = gpe_context->surface_state_binding_table.surface_state_offset + + index * SURFACE_STATE_PADDED_SIZE_GEN9; + unsigned int binding_table_offset = gpe_context->surface_state_binding_table.binding_table_offset + + index * 4; + struct i965_gpe_resource *gpe_resource = gpe_surface->gpe_resource; + + dri_bo_get_tiling(gpe_resource->bo, &tiling, &swizzle); + + dri_bo_map(gpe_context->surface_state_binding_table.bo, 1); + buf = (char *)gpe_context->surface_state_binding_table.bo->virtual; + *((unsigned int *)(buf + binding_table_offset)) = surface_state_offset; + + if (gpe_surface->is_2d_surface && gpe_surface->is_uv_surface) { + unsigned int cbcr_offset; + struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset); + + width = gpe_resource->width; + height = gpe_resource->height / 2; + pitch = gpe_resource->pitch; + + if (gpe_surface->is_media_block_rw) + width = (ALIGN(width, 4) >> 2); + + if (tiling == I915_TILING_Y) { + tile_alignment = 32; + } else if (tiling == I915_TILING_X) { + tile_alignment = 8; + } else + tile_alignment = 1; + + y_offset = (gpe_resource->y_cb_offset % tile_alignment); + cbcr_offset = ALIGN_FLOOR(gpe_resource->y_cb_offset, tile_alignment) * pitch; + + gen9_gpe_set_2d_surface_state(ss, + gpe_surface->cacheability_control, + I965_SURFACEFORMAT_R16_UINT, + tiling, + width, height, pitch, + gpe_resource->bo->offset64 + cbcr_offset, + y_offset); + + dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + cbcr_offset, + surface_state_offset + offsetof(struct gen9_surface_state, ss8), + gpe_resource->bo); + } else if (gpe_surface->is_2d_surface) { + struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset); + + width = gpe_resource->width; + height = gpe_resource->height; + pitch = gpe_resource->pitch; + + if (gpe_surface->is_media_block_rw) + width = (ALIGN(width, 4) >> 2); + + gen9_gpe_set_2d_surface_state(ss, + gpe_surface->cacheability_control, + gpe_surface->format, + tiling, + width, height, pitch, + gpe_resource->bo->offset64, + y_offset); + + dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + 0, + surface_state_offset + offsetof(struct gen9_surface_state, ss8), + gpe_resource->bo); + } else if (gpe_surface->is_adv_surface) { + struct gen9_surface_state2 *ss = (struct gen9_surface_state2 *)(buf + surface_state_offset); + + width = gpe_resource->width; + height = gpe_resource->height; + pitch = gpe_resource->pitch; + + gen9_gpe_set_adv_surface_state(ss, + gpe_surface->v_direction, + gpe_surface->cacheability_control, + MFX_SURFACE_PLANAR_420_8, + tiling, + width, height, pitch, + gpe_resource->bo->offset64, + gpe_resource->y_cb_offset); + + dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + 0, + surface_state_offset + offsetof(struct gen9_surface_state2, ss6), + gpe_resource->bo); + } else { + struct gen9_surface_state *ss = (struct gen9_surface_state *)(buf + surface_state_offset); + unsigned int format; + + assert(gpe_surface->is_buffer); + + if (gpe_surface->is_raw_buffer) { + format = I965_SURFACEFORMAT_RAW; + pitch = 1; + } else { + format = I965_SURFACEFORMAT_R32_UINT; + pitch = sizeof(unsigned int); + } + + gen9_gpe_set_buffer2_surface_state(ss, + gpe_surface->cacheability_control, + format, + gpe_surface->size, + pitch, + gpe_resource->bo->offset64 + gpe_surface->offset); + + dri_bo_emit_reloc(gpe_context->surface_state_binding_table.bo, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + gpe_surface->offset, + surface_state_offset + offsetof(struct gen9_surface_state, ss8), + gpe_resource->bo); + } + + dri_bo_unmap(gpe_context->surface_state_binding_table.bo); +} + +bool +i965_gpe_allocate_2d_resource(dri_bufmgr *bufmgr, + struct i965_gpe_resource *res, + int width, + int height, + int pitch, + const char *name) +{ + int bo_size; + + if (!res) + return false; + + res->type = I965_GPE_RESOURCE_2D; + res->width = width; + res->height = height; + res->pitch = pitch; + + bo_size = ALIGN(height, 16) * pitch; + res->size = bo_size; + + res->bo = dri_bo_alloc(bufmgr, name, res->size, 4096); + res->map = NULL; + + return true; +} + +void +gen8_gpe_media_state_flush(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch) +{ + BEGIN_BATCH(batch, 2); + + OUT_BATCH(batch, CMD_MEDIA_STATE_FLUSH | (2 - 2)); + OUT_BATCH(batch, 0); + + ADVANCE_BATCH(batch); +} + +void +gen8_gpe_media_object(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch, + struct gpe_media_object_parameter *param) +{ + int batch_size, subdata_size; + + batch_size = 6; + subdata_size = 0; + if (param->pinline_data && param->inline_size) { + subdata_size = ALIGN(param->inline_size, 4); + batch_size += subdata_size / 4; + } + BEGIN_BATCH(batch, batch_size); + OUT_BATCH(batch, CMD_MEDIA_OBJECT | (batch_size - 2)); + OUT_BATCH(batch, param->interface_offset); + OUT_BATCH(batch, param->use_scoreboard << 21); + OUT_BATCH(batch, 0); + OUT_BATCH(batch, (param->scoreboard_y << 16 | + param->scoreboard_x)); + OUT_BATCH(batch, param->scoreboard_mask); + + if (subdata_size) + intel_batchbuffer_data(batch, param->pinline_data, subdata_size); + + ADVANCE_BATCH(batch); +} + +void +gen9_gpe_media_object_walker(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch, + struct gpe_media_object_walker_parameter *param) +{ + int walker_length; + + walker_length = 17; + if (param->inline_size) + walker_length += ALIGN(param->inline_size, 4) / 4; + BEGIN_BATCH(batch, walker_length); + OUT_BATCH(batch, CMD_MEDIA_OBJECT_WALKER | (walker_length - 2)); + OUT_BATCH(batch, param->interface_offset); + OUT_BATCH(batch, param->use_scoreboard << 21); + OUT_BATCH(batch, 0); + OUT_BATCH(batch, 0); + OUT_BATCH(batch, (param->group_id_loop_select << 8 | + param->scoreboard_mask)); // DW5 + OUT_BATCH(batch, (param->color_count_minus1 << 24 | + param->middle_loop_extra_steps << 16 | + param->mid_loop_unit_y << 12 | + param->mid_loop_unit_x << 8)); + OUT_BATCH(batch, ((param->global_loop_exec_count & 0x3ff) << 16 | + (param->local_loop_exec_count & 0x3ff))); + OUT_BATCH(batch, param->block_resolution.value); + OUT_BATCH(batch, param->local_start.value); + OUT_BATCH(batch, 0); // DW10 + OUT_BATCH(batch, param->local_outer_loop_stride.value); + OUT_BATCH(batch, param->local_inner_loop_unit.value); + OUT_BATCH(batch, param->global_resolution.value); + OUT_BATCH(batch, param->global_start.value); + OUT_BATCH(batch, param->global_outer_loop_stride.value); + OUT_BATCH(batch, param->global_inner_loop_unit.value); + + if (param->pinline_data && param->inline_size) + intel_batchbuffer_data(batch, param->pinline_data, ALIGN(param->inline_size, 4)); + + ADVANCE_BATCH(batch); +} diff -Nru intel-vaapi-driver-1.6.2/src/i965_gpe_utils.h intel-vaapi-driver-1.7.1/src/i965_gpe_utils.h --- intel-vaapi-driver-1.6.2/src/i965_gpe_utils.h 2015-12-15 05:27:56.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_gpe_utils.h 2016-06-16 00:57:46.000000000 +0000 @@ -44,11 +44,43 @@ unsigned int pitch; }; +enum { + I965_GPE_RESOURCE_BUFFER = 0, + I965_GPE_RESOURCE_2D +}; + +struct i965_gpe_resource +{ + dri_bo *bo; + char *map; + uint32_t type; + uint32_t width; + uint32_t height; + uint32_t pitch; + uint32_t size; + uint32_t tiling; + uint32_t cb_cr_pitch; + uint32_t x_cb_offset; + uint32_t y_cb_offset; +}; + +struct gpe_dynamic_state_parameter +{ + dri_bo *bo; + int bo_size; + unsigned int curbe_offset; + unsigned int idrt_offset; + unsigned int sampler_offset; +}; + struct i965_gpe_context { struct { dri_bo *bo; unsigned int length; /* in bytes */ + unsigned int max_entries; + unsigned int binding_table_offset; + unsigned int surface_state_offset; } surface_state_binding_table; struct { @@ -132,6 +164,7 @@ } dynamic_state; unsigned int sampler_offset; + int sampler_entries; int sampler_size; unsigned int idrt_offset; int idrt_size; @@ -139,6 +172,72 @@ int curbe_size; }; +struct gpe_mi_flush_dw_parameter +{ + dri_bo *bo; + unsigned int offset; + unsigned int video_pipeline_cache_invalidate; + unsigned int dw0; + unsigned int dw1; +}; + +struct gpe_mi_store_data_imm_parameter +{ + dri_bo *bo; + unsigned int is_qword; + unsigned int offset; + unsigned int dw0; + unsigned int dw1; +}; + +struct gpe_mi_store_register_mem_parameter +{ + dri_bo *bo; + unsigned int offset; + unsigned int mmio_offset; +}; + +struct gpe_mi_load_register_mem_parameter +{ + dri_bo *bo; + unsigned int offset; + unsigned int mmio_offset; +}; + +struct gpe_mi_load_register_imm_parameter +{ + unsigned int data; + unsigned int mmio_offset; +}; + +struct gpe_mi_load_register_reg_parameter +{ + unsigned int src_mmio_offset; + unsigned int dst_mmio_offset; +}; + +struct gpe_mi_math_parameter +{ + unsigned int num_instructions; + unsigned int *instruction_list; +}; + +struct gpe_mi_conditional_batch_buffer_end_parameter +{ + dri_bo *bo; + unsigned int offset; + unsigned int compare_mask_mode_disabled; + unsigned int compare_data; +}; + +struct gpe_mi_batch_buffer_start_parameter +{ + dri_bo *bo; + unsigned int offset; + unsigned int is_second_level; + unsigned int use_global_gtt; +}; + void i965_gpe_context_destroy(struct i965_gpe_context *gpe_context); void i965_gpe_context_init(VADriverContextP ctx, struct i965_gpe_context *gpe_context); @@ -209,6 +308,10 @@ void gen8_gpe_pipeline_setup(VADriverContextP ctx, struct i965_gpe_context *gpe_context, struct intel_batchbuffer *batch); +extern void +gen8_gpe_context_set_dynamic_buffer(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct gpe_dynamic_state_parameter *ds); void gen8_gpe_context_destroy(struct i965_gpe_context *gpe_context); @@ -228,4 +331,175 @@ struct i965_gpe_context *gpe_context, struct intel_batchbuffer *batch); +Bool i965_allocate_gpe_resource(dri_bufmgr *bufmgr, + struct i965_gpe_resource *res, + int size, + const char *name); + +void i965_object_surface_to_2d_gpe_resource(struct i965_gpe_resource *res, + struct object_surface *obj_surface); + +void i965_dri_object_to_buffer_gpe_resource(struct i965_gpe_resource *res, + dri_bo *bo); + +void i965_gpe_dri_object_to_2d_gpe_resource(struct i965_gpe_resource *res, + dri_bo *bo, + unsigned int width, + unsigned int height, + unsigned int pitch); + +void i965_zero_gpe_resource(struct i965_gpe_resource *res); + +void i965_free_gpe_resource(struct i965_gpe_resource *res); + +void *i965_map_gpe_resource(struct i965_gpe_resource *res); + +void i965_unmap_gpe_resource(struct i965_gpe_resource *res); + +void gen9_gpe_mi_flush_dw(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_flush_dw_parameter *params); + +void gen9_gpe_mi_store_data_imm(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_store_data_imm_parameter *params); + +void gen9_gpe_mi_store_register_mem(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_store_register_mem_parameter *params); + +void gen9_gpe_mi_load_register_mem(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_mem_parameter *params); + +void gen9_gpe_mi_load_register_imm(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_imm_parameter *params); + +void gen9_gpe_mi_load_register_reg(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_load_register_reg_parameter *params); + +void gen9_gpe_mi_math(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_math_parameter *params); + +void gen9_gpe_mi_conditional_batch_buffer_end(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_conditional_batch_buffer_end_parameter *params); + +void gen9_gpe_mi_batch_buffer_start(VADriverContextP ctx, + struct intel_batchbuffer *batch, + struct gpe_mi_batch_buffer_start_parameter *params); + + +struct gpe_media_object_parameter +{ + unsigned int use_scoreboard; + unsigned int scoreboard_x; + unsigned int scoreboard_y; + unsigned int scoreboard_mask; + unsigned int interface_offset; + void *pinline_data; + unsigned int inline_size; +}; + +struct i965_gpe_surface +{ + unsigned int is_buffer:1; + unsigned int is_2d_surface:1; + unsigned int is_adv_surface:1; + unsigned int is_uv_surface:1; + unsigned int is_media_block_rw:1; + unsigned int is_raw_buffer:1; + + unsigned int vert_line_stride_offset; + unsigned int vert_line_stride; + unsigned int cacheability_control; + unsigned int format; // 2d surface only + unsigned int v_direction; // adv surface only + unsigned int size; // buffer only + unsigned int offset; // buffer only + + struct i965_gpe_resource *gpe_resource; +}; + +extern void +gen9_gpe_reset_binding_table(VADriverContextP ctx, + struct i965_gpe_context *gpe_context); +extern +void *gen8p_gpe_context_map_curbe(struct i965_gpe_context *gpe_context); + +extern +void gen8p_gpe_context_unmap_curbe(struct i965_gpe_context *gpe_context); + +extern +void gen8_gpe_setup_interface_data(VADriverContextP ctx, + struct i965_gpe_context *gpe_context); +extern void +gen9_gpe_context_add_surface(struct i965_gpe_context *gpe_context, + struct i965_gpe_surface *gpe_surface, + int index); + +extern bool +i965_gpe_allocate_2d_resource(dri_bufmgr *bufmgr, + struct i965_gpe_resource *res, + int width, + int height, + int pitch, + const char *name); + +struct gpe_walker_xy +{ + union { + struct { + unsigned int x:16; + unsigned int y:16; + }; + unsigned int value; + }; +}; + +struct gpe_media_object_walker_parameter +{ + void *pinline_data; + unsigned int inline_size; + unsigned int interface_offset; + unsigned int use_scoreboard; + unsigned int scoreboard_mask; + unsigned int group_id_loop_select; + unsigned int color_count_minus1; + unsigned int mid_loop_unit_x; + unsigned int mid_loop_unit_y; + unsigned int middle_loop_extra_steps; + unsigned int local_loop_exec_count; + unsigned int global_loop_exec_count; + struct gpe_walker_xy block_resolution; + struct gpe_walker_xy local_start; + struct gpe_walker_xy local_end; + struct gpe_walker_xy local_outer_loop_stride; + struct gpe_walker_xy local_inner_loop_unit; + struct gpe_walker_xy global_resolution; + struct gpe_walker_xy global_start; + struct gpe_walker_xy global_outer_loop_stride; + struct gpe_walker_xy global_inner_loop_unit; +}; + +extern void +gen8_gpe_media_object(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch, + struct gpe_media_object_parameter *param); + +extern void +gen8_gpe_media_state_flush(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch); + +extern void +gen9_gpe_media_object_walker(VADriverContextP ctx, + struct i965_gpe_context *gpe_context, + struct intel_batchbuffer *batch, + struct gpe_media_object_walker_parameter *param); + #endif /* _I965_GPE_UTILS_H_ */ diff -Nru intel-vaapi-driver-1.6.2/src/i965_pciids.h intel-vaapi-driver-1.7.1/src/i965_pciids.h --- intel-vaapi-driver-1.6.2/src/i965_pciids.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_pciids.h 2016-06-16 00:57:46.000000000 +0000 @@ -148,13 +148,40 @@ CHIPSET(0x191D, skl, skl, "Intel(R) Skylake") CHIPSET(0x191E, skl, skl, "Intel(R) Skylake") CHIPSET(0x1921, skl, skl, "Intel(R) Skylake") +CHIPSET(0x1923, skl, skl, "Intel(R) Skylake") CHIPSET(0x1926, skl, skl, "Intel(R) Skylake") +CHIPSET(0x1927, skl, skl, "Intel(R) Skylake") CHIPSET(0x192A, skl, skl, "Intel(R) Skylake") CHIPSET(0x192B, skl, skl, "Intel(R) Skylake") +CHIPSET(0x192D, skl, skl, "Intel(R) Skylake") CHIPSET(0x1932, skl, skl, "Intel(R) Skylake") CHIPSET(0x193A, skl, skl, "Intel(R) Skylake") CHIPSET(0x193B, skl, skl, "Intel(R) Skylake") CHIPSET(0x193D, skl, skl, "Intel(R) Skylake") CHIPSET(0x0A84, bxt, bxt, "Intel(R) Broxton") CHIPSET(0x1A84, bxt, bxt, "Intel(R) Broxton") +CHIPSET(0x1A85, bxt, bxt, "Intel(R) Broxton") CHIPSET(0x5A84, bxt, bxt, "Intel(R) Broxton") +CHIPSET(0x5A85, bxt, bxt, "Intel(R) Broxton") +CHIPSET(0x5916, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5913, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5906, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5926, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5921, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5915, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x590E, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x591E, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5912, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5917, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5902, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x5932, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x591B, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x592B, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x593B, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x590B, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x591A, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x592A, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x593A, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x590A, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x591D, kbl, kbl, "Intel(R) Kabylake") +CHIPSET(0x593D, kbl, kbl, "Intel(R) Kabylake") \ No newline at end of file diff -Nru intel-vaapi-driver-1.6.2/src/i965_post_processing.c intel-vaapi-driver-1.7.1/src/i965_post_processing.c --- intel-vaapi-driver-1.6.2/src/i965_post_processing.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_post_processing.c 2016-06-03 06:05:58.000000000 +0000 @@ -41,6 +41,8 @@ #include "i965_yuv_coefs.h" #include "intel_media.h" +#include "gen75_picture_process.h" + extern VAStatus vpp_surface_convert(VADriverContextP ctx, struct object_surface *src_obj_surf, @@ -5296,6 +5298,183 @@ return vaStatus; } +// it only support NV12 and P010 for vebox proc ctx +static struct object_surface *derive_surface(VADriverContextP ctx, + struct object_image *obj_image, + struct object_surface *obj_surface) +{ + VAImage * const image = &obj_image->image; + + memset((void *)obj_surface, 0, sizeof(*obj_surface)); + obj_surface->fourcc = image->format.fourcc; + obj_surface->orig_width = image->width; + obj_surface->orig_height = image->height; + obj_surface->width = image->pitches[0]; + obj_surface->height = image->height; + obj_surface->y_cb_offset = image->offsets[1] / obj_surface->width; + obj_surface->y_cr_offset = obj_surface->y_cb_offset; + obj_surface->bo = obj_image->bo; + obj_surface->subsampling = SUBSAMPLE_YUV420; + + return obj_surface; +} + +static VAStatus +vebox_processing_simple(VADriverContextP ctx, + struct i965_post_processing_context *pp_context, + struct object_surface *src_obj_surface, + struct object_surface *dst_obj_surface, + const VARectangle *rect) +{ + struct i965_driver_data *i965 = i965_driver_data(ctx); + VAProcPipelineParameterBuffer pipeline_param; + VAStatus status = VA_STATUS_ERROR_UNIMPLEMENTED; + + if(pp_context->vebox_proc_ctx == NULL) { + pp_context->vebox_proc_ctx = gen75_vebox_context_init(ctx); + } + + memset((void *)&pipeline_param, 0, sizeof(pipeline_param)); + pipeline_param.surface_region = rect; + pipeline_param.output_region = rect; + pipeline_param.filter_flags = 0; + pipeline_param.num_filters = 0; + + pp_context->vebox_proc_ctx->pipeline_param = &pipeline_param; + pp_context->vebox_proc_ctx->surface_input_object = src_obj_surface; + pp_context->vebox_proc_ctx->surface_output_object = dst_obj_surface; + + if (IS_GEN9(i965->intel.device_info)) + status = gen9_vebox_process_picture(ctx, pp_context->vebox_proc_ctx); + + return status; +} + +static VAStatus +i965_image_p010_processing(VADriverContextP ctx, + const struct i965_surface *src_surface, + const VARectangle *src_rect, + struct i965_surface *dst_surface, + const VARectangle *dst_rect) +{ +#define HAS_VPP_P010(ctx) ((ctx)->codec_info->has_vpp_p010 && \ + (ctx)->intel.has_bsd) + + struct i965_driver_data *i965 = i965_driver_data(ctx); + struct i965_post_processing_context *pp_context = i965->pp_context; + struct object_surface *src_obj_surface = NULL, *dst_obj_surface = NULL; + struct object_surface tmp_src_obj_surface, tmp_dst_obj_surface; + struct object_surface *tmp_surface = NULL; + VASurfaceID tmp_surface_id[3], out_surface_id = VA_INVALID_ID; + int num_tmp_surfaces = 0; + int fourcc = pp_get_surface_fourcc(ctx, dst_surface); + VAStatus vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED; + int vpp_post = 0; + + if(HAS_VPP_P010(i965)) { + vpp_post = 0; + switch(fourcc) { + case VA_FOURCC_NV12: + if(src_rect->x != dst_rect->x || + src_rect->y != dst_rect->y || + src_rect->width != dst_rect->width || + src_rect->height != dst_rect->height) { + vpp_post = 1; + } + break; + case VA_FOURCC_P010: + // don't support scaling while the fourcc of dst_surface is P010 + if(src_rect->x != dst_rect->x || + src_rect->y != dst_rect->y || + src_rect->width != dst_rect->width || + src_rect->height != dst_rect->height) { + vaStatus = VA_STATUS_ERROR_UNIMPLEMENTED; + goto EXIT; + } + break; + default: + vpp_post = 1; + break; + } + + if(src_surface->type == I965_SURFACE_TYPE_IMAGE) { + src_obj_surface = derive_surface(ctx, (struct object_image *)src_surface->base, + &tmp_src_obj_surface); + } + else + src_obj_surface = (struct object_surface *)src_surface->base; + + if(src_obj_surface == NULL) { + vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; + goto EXIT; + } + + if(vpp_post == 1) { + vaStatus = i965_CreateSurfaces(ctx, + src_obj_surface->orig_width, + src_obj_surface->orig_height, + VA_RT_FORMAT_YUV420, + 1, + &out_surface_id); + assert(vaStatus == VA_STATUS_SUCCESS); + tmp_surface_id[num_tmp_surfaces++] = out_surface_id; + tmp_surface = SURFACE(out_surface_id); + assert(tmp_surface); + i965_check_alloc_surface_bo(ctx, tmp_surface, 1, VA_FOURCC_NV12, SUBSAMPLE_YUV420); + } + + if(tmp_surface != NULL) + dst_obj_surface = tmp_surface; + else { + if(dst_surface->type == I965_SURFACE_TYPE_IMAGE) { + dst_obj_surface = derive_surface(ctx, (struct object_image *)dst_surface->base, + &tmp_dst_obj_surface); + } + else + dst_obj_surface = (struct object_surface *)dst_surface->base; + } + + if(dst_obj_surface == NULL) { + vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; + goto EXIT; + } + + vaStatus = vebox_processing_simple(ctx, + pp_context, + src_obj_surface, + dst_obj_surface, + src_rect); + if(vaStatus != VA_STATUS_SUCCESS) + goto EXIT; + + if(vpp_post == 1) { + struct i965_surface src_surface_new; + + if(tmp_surface != NULL){ + src_surface_new.base = (struct object_base *)tmp_surface; + src_surface_new.type = I965_SURFACE_TYPE_SURFACE; + src_surface_new.flags = I965_SURFACE_FLAG_FRAME; + } + else + memcpy((void *)&src_surface_new, (void *)src_surface, sizeof(src_surface_new)); + + vaStatus = i965_image_pl2_processing(ctx, + &src_surface_new, + src_rect, + dst_surface, + dst_rect); + } + } + +EXIT: + if(num_tmp_surfaces) + i965_DestroySurfaces(ctx, + tmp_surface_id, + num_tmp_surfaces); + + return vaStatus; +} + VAStatus i965_image_processing(VADriverContextP ctx, const struct i965_surface *src_surface, @@ -5351,6 +5530,13 @@ src_surface, src_rect, dst_surface, + dst_rect); + break; + case VA_FOURCC_P010: + status = i965_image_p010_processing(ctx, + src_surface, + src_rect, + dst_surface, dst_rect); break; default: diff -Nru intel-vaapi-driver-1.6.2/src/i965_post_processing.h intel-vaapi-driver-1.7.1/src/i965_post_processing.h --- intel-vaapi-driver-1.6.2/src/i965_post_processing.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_post_processing.h 2016-06-03 06:05:58.000000000 +0000 @@ -528,6 +528,8 @@ unsigned int curbe_allocation_size : 16; } vfe_gpu_state; + struct intel_vebox_context *vebox_proc_ctx; + struct pp_load_save_context pp_load_save_context; struct pp_scaling_context pp_scaling_context; struct pp_avs_context pp_avs_context; diff -Nru intel-vaapi-driver-1.6.2/src/i965_structs.h intel-vaapi-driver-1.7.1/src/i965_structs.h --- intel-vaapi-driver-1.6.2/src/i965_structs.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/i965_structs.h 2016-06-16 00:57:46.000000000 +0000 @@ -2201,6 +2201,155 @@ struct gen8_sampler_8x8_avs_coefficients coefficients1[15]; }; +struct gen9_sampler_8x8_avs +{ + struct { + unsigned int gain_factor:6; + unsigned int weak_edge_threshold:6; + unsigned int strong_edge_threshold:6; + unsigned int r3x_coefficient:5; + unsigned int r3c_coefficient:5; + unsigned int pad1:4; + } dw0; + + struct { + unsigned int pad0; + } dw1; + + struct { + unsigned int global_noise_estimation:8; + unsigned int non_edge_weight:3; + unsigned int regular_weight:3; + unsigned int strong_edge_weight:3; + unsigned int r5x_coefficient:5; + unsigned int r5cx_coefficient:5; + unsigned int r5c_coefficient:5; + } dw2; + + struct { + unsigned int sin_alpha:8; /* S0.7 */ + unsigned int cos_alpha:8; /* S0.7 */ + unsigned int sat_max:6; + unsigned int hue_max:6; + unsigned int enable_8tap_adaptive_filter:2; + unsigned int ief4_smooth_enable:1; + unsigned int skin_ief_enable:1; + } dw3; + + struct { + unsigned int s3u:11; /* S2.8 */ + unsigned int shuffle_output_write_back:1; + unsigned int diamond_margin:3; + unsigned int vy_std_enable:1; + unsigned int umid:8; + unsigned int vmid:8; + } dw4; + + struct { + unsigned int diamond_dv:7; + unsigned int diamond_th:6; + unsigned int diamond_alpha:8; + unsigned int hs_margin:3; + unsigned int diamond_du:7; + unsigned int skin_detailfilter:1; + } dw5; + + struct { + unsigned int y_point1:8; + unsigned int y_point2:8; + unsigned int y_point3:8; + unsigned int y_point4:8; + } dw6; + + struct { + unsigned int inv_margin_vyl:16; + unsigned int pad0:16; + } dw7; + + struct { + unsigned int inv_margin_vyu:16; + unsigned int p0l:8; + unsigned int p1l:8; + } dw8; + + struct { + unsigned int p2l:8; + unsigned int p3l:8; + unsigned int b0l:8; + unsigned int b1l:8; + } dw9; + + struct { + unsigned int b2l:8; + unsigned int b3l:8; + unsigned int s0l:11; + unsigned int y_slope2:5; + } dw10; + + struct { + unsigned int s1l:11; + unsigned int s2l:11; + unsigned int pad0:10; + } dw11; + + struct { + unsigned int s3l:11; + unsigned int p0u:8; + unsigned int p1u:8; + unsigned int y_slope1:5; + } dw12; + + struct { + unsigned int p2u:8; + unsigned int p3u:8; + unsigned int b0u:8; + unsigned int b1u:8; + } dw13; + + struct { + unsigned int b2u:8; + unsigned int b3u:8; + unsigned int s0u:11; + unsigned int pad0:5; + } dw14; + + struct { + unsigned int s1u:11; + unsigned int s2u:11; + unsigned int pad0:10; + } dw15; + + /* DW16-DW151 for 17 coeff tabls */ + struct gen8_sampler_8x8_avs_coefficients coefficients[17]; + + struct { + unsigned int transition_area_with_8_pixels:3; + unsigned int pad0:1; + unsigned int transition_area_with_4_pixels:3; + unsigned int pad1:1; + unsigned int max_derivative_8_pixels:8; + unsigned int max_derivative_4_pixels:8; + unsigned int default_sharpness_level:8; + } dw152; + + struct { + unsigned int rgb_adaptive:1; + unsigned int adaptive_filter_for_all_channel:1; + unsigned int pad0:19; + unsigned int bypass_y_adaptive_filtering:1; + unsigned int bypass_x_adaptive_filtering:1; + unsigned int pad1:9; + } dw153; + + unsigned int reserved1[6]; + + /* 160-279 for 17..31 avs_coeff */ + struct gen8_sampler_8x8_avs_coefficients extra_coefficients[15]; + + // 280 - 511 (padding to align it to 512 dwords) + unsigned int reserved2[232]; +}; + #define SURFACE_STATE_PADDED_SIZE_0_GEN7 ALIGN(sizeof(struct gen7_surface_state), 32) #define SURFACE_STATE_PADDED_SIZE_1_GEN7 ALIGN(sizeof(struct gen7_surface_state2), 32) #define SURFACE_STATE_PADDED_SIZE_GEN7 MAX(SURFACE_STATE_PADDED_SIZE_0_GEN7, SURFACE_STATE_PADDED_SIZE_1_GEN7) diff -Nru intel-vaapi-driver-1.6.2/src/intel_batchbuffer.h intel-vaapi-driver-1.7.1/src/intel_batchbuffer.h --- intel-vaapi-driver-1.6.2/src/intel_batchbuffer.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/intel_batchbuffer.h 2016-06-16 00:57:46.000000000 +0000 @@ -110,6 +110,8 @@ __OUT_RELOC(batch, bo, read_domains, write_domain, delta) #define OUT_RELOC64(batch, bo, read_domains, write_domain, delta) \ __OUT_RELOC64(batch, bo, read_domains, write_domain, delta) +#define OUT_BCS_RELOC64(batch, bo, read_domains, write_domain, delta) \ + __OUT_RELOC64(batch, bo, read_domains, write_domain, delta) #define ADVANCE_BATCH(batch) __ADVANCE_BATCH(batch) #define ADVANCE_BLT_BATCH(batch) __ADVANCE_BATCH(batch) diff -Nru intel-vaapi-driver-1.6.2/src/intel_driver.h intel-vaapi-driver-1.7.1/src/intel_driver.h --- intel-vaapi-driver-1.6.2/src/intel_driver.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/intel_driver.h 2016-06-16 00:57:46.000000000 +0000 @@ -31,7 +31,26 @@ #define MI_FLUSH_STATE_INSTRUCTION_CACHE_INVALIDATE (0x1 << 0) #define MI_FLUSH_DW (CMD_MI | (0x26 << 23) | 0x2) +#define MI_FLUSH_DW2 (CMD_MI | (0x26 << 23) | 0x3) #define MI_FLUSH_DW_VIDEO_PIPELINE_CACHE_INVALIDATE (0x1 << 7) +#define MI_FLUSH_DW_NOWRITE (0 << 14) +#define MI_FLUSH_DW_WRITE_QWORD (1 << 14) +#define MI_FLUSH_DW_WRITE_TIME (3 << 14) + +#define MI_STORE_DATA_IMM (CMD_MI | (0x20 << 23)) + +#define MI_STORE_REGISTER_MEM (CMD_MI | (0x24 << 23)) + +#define MI_LOAD_REGISTER_IMM (CMD_MI | (0x22 << 23)) + +#define MI_LOAD_REGISTER_MEM (CMD_MI | (0x29 << 23)) + +#define MI_LOAD_REGISTER_REG (CMD_MI | (0x2A << 23)) + +#define MI_MATH (CMD_MI | (0x1A << 23)) + +#define MI_CONDITIONAL_BATCH_BUFFER_END (CMD_MI | (0x36 << 23)) +#define MI_COMPARE_MASK_MODE_ENANBLED (1 << 19) #define XY_COLOR_BLT_CMD (CMD_2D | (0x50 << 22) | 0x04) #define XY_COLOR_BLT_WRITE_ALPHA (1 << 21) @@ -73,6 +92,8 @@ #define ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) #define CLAMP(min, max, a) ((a) < (min) ? (min) : ((a) > (max) ? (max) : (a))) +#define ALIGN_FLOOR(i, n) ((i) & ~((n) - 1)) + #define Bool int #define True 1 #define False 0 @@ -136,7 +157,9 @@ unsigned int is_baytrail : 1; /* gen7 */ unsigned int is_haswell : 1; /* gen7 */ unsigned int is_cherryview : 1; /* gen8 */ + unsigned int is_skylake : 1; /* gen9 */ unsigned int is_broxton : 1; /* gen9 */ + unsigned int is_kabylake : 1; /* gen9p5 */ }; struct intel_driver_data @@ -198,4 +221,10 @@ #define IS_GEN9(device_info) (device_info->gen == 9) +#define IS_SKL(device_info) (device_info->is_skylake) + +#define IS_BXT(device_info) (device_info->is_broxton) + +#define IS_KBL(device_info) (device_info->is_kabylake) + #endif /* _INTEL_DRIVER_H_ */ diff -Nru intel-vaapi-driver-1.6.2/src/intel_media_common.c intel-vaapi-driver-1.7.1/src/intel_media_common.c --- intel-vaapi-driver-1.6.2/src/intel_media_common.c 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/intel_media_common.c 2016-06-16 00:57:46.000000000 +0000 @@ -123,11 +123,41 @@ return; } - dri_bo_unreference(vp9_surface->motion_vector_temporal_bo); - vp9_surface->motion_vector_temporal_bo = NULL; - free(vp9_surface); *data = NULL; pthread_mutex_unlock(&free_vp9_surface_lock); } + +extern VAStatus +i965_DestroySurfaces(VADriverContextP ctx, + VASurfaceID *surface_list, + int num_surfaces); + +static pthread_mutex_t free_vdenc_avc_surface_lock = PTHREAD_MUTEX_INITIALIZER; + +void +vdenc_free_avc_surface(void **data) +{ + VDEncAvcSurface *avc_surface; + + pthread_mutex_lock(&free_vdenc_avc_surface_lock); + + avc_surface = *data; + + if (!avc_surface) { + pthread_mutex_unlock(&free_vdenc_avc_surface_lock); + return; + } + + if (avc_surface->scaled_4x_surface_obj) { + i965_DestroySurfaces(avc_surface->ctx, &avc_surface->scaled_4x_surface_id, 1); + avc_surface->scaled_4x_surface_id = VA_INVALID_SURFACE; + avc_surface->scaled_4x_surface_obj = NULL; + } + + free(avc_surface); + *data = NULL; + + pthread_mutex_unlock(&free_vdenc_avc_surface_lock); +} diff -Nru intel-vaapi-driver-1.6.2/src/intel_media.h intel-vaapi-driver-1.7.1/src/intel_media.h --- intel-vaapi-driver-1.6.2/src/intel_media.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/intel_media.h 2016-06-16 00:57:46.000000000 +0000 @@ -68,8 +68,18 @@ dri_bo *motion_vector_temporal_bo; }; +typedef struct vdenc_avc_surface VDEncAvcSurface; +struct vdenc_avc_surface +{ + VADriverContextP ctx; + VASurfaceID scaled_4x_surface_id; + struct object_surface *scaled_4x_surface_obj; +}; + extern void gen_free_hevc_surface(void **data); extern void gen_free_vp9_surface(void **data); +extern void vdenc_free_avc_surface(void **data); + #endif /* INTEL_MEDIA_H */ diff -Nru intel-vaapi-driver-1.6.2/src/intel_version.h intel-vaapi-driver-1.7.1/src/intel_version.h --- intel-vaapi-driver-1.6.2/src/intel_version.h 2015-12-15 06:01:02.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/intel_version.h 2016-06-21 02:07:56.000000000 +0000 @@ -31,6 +31,6 @@ * The full version identifier of libva-intel-driver, from a git * repository, in string form (suitable for string concatenation). */ -#define INTEL_DRIVER_GIT_VERSION "1.6.2" +#define INTEL_DRIVER_GIT_VERSION "1.7.1" #endif /* INTEL_VERSION_H */ diff -Nru intel-vaapi-driver-1.6.2/src/Makefile.am intel-vaapi-driver-1.7.1/src/Makefile.am --- intel-vaapi-driver-1.6.2/src/Makefile.am 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/Makefile.am 2016-06-17 01:06:24.000000000 +0000 @@ -66,6 +66,7 @@ gen9_mfc.c \ gen9_mfc_hevc.c \ gen9_mfd.c \ + gen9_vdenc.c \ gen75_picture_process.c \ gen75_vme.c \ gen75_vpp_gpe.c \ @@ -96,6 +97,10 @@ intel_memman.c \ object_heap.c \ intel_media_common.c \ + vp9_probs.c \ + gen9_vp9_encoder_kernels.c \ + gen9_vp9_const_def.c \ + gen9_vp9_encoder.c \ $(NULL) source_h = \ @@ -110,6 +115,7 @@ gen8_post_processing.h \ gen9_mfd.h \ gen9_mfc.h \ + gen9_vdenc.h \ i965_avc_bsd.h \ i965_avc_hw_scoreboard.h\ i965_avc_ildb.h \ @@ -143,6 +149,10 @@ sysdeps.h \ va_backend_compat.h \ i965_fourcc.h \ + gen9_vp9_encoder.h \ + gen9_vp9_encapi.h \ + gen9_vp9_const_def.h \ + gen9_vp9_encoder_kernels.h \ $(NULL) i965_drv_video_la_LTLIBRARIES = i965_drv_video.la @@ -199,9 +209,12 @@ # Wayland protocol protocol_source_h = wayland-drm-client-protocol.h i965_output_wayland.c: $(protocol_source_h) -@wayland_scanner_rules@ +%-client-protocol.h : %.xml + $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@ -DIST_SUBDIRS += wayland +EXTRA_DIST += \ + wayland-drm.xml \ + $(NULL) # Extra clean files so that maintainer-clean removes *everything* MAINTAINERCLEANFILES = Makefile.in config.h.in diff -Nru intel-vaapi-driver-1.6.2/src/Makefile.in intel-vaapi-driver-1.7.1/src/Makefile.in --- intel-vaapi-driver-1.6.2/src/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -155,17 +155,18 @@ gen6_mfc_common.c gen6_mfd.c gen6_vme.c gen7_vme.c gen7_mfc.c \ gen7_mfd.c gen75_mfd.c gen75_mfc.c gen8_mfc.c gen8_mfd.c \ gen8_vme.c gen9_vme.c gen9_mfc.c gen9_mfc_hevc.c gen9_mfd.c \ - gen75_picture_process.c gen75_vme.c gen75_vpp_gpe.c \ - gen75_vpp_vebox.c gen9_post_processing.c i965_avc_bsd.c \ - i965_avc_hw_scoreboard.c i965_avc_ildb.c i965_decoder_utils.c \ - i965_device_info.c i965_drv_video.c i965_encoder.c \ - i965_encoder_utils.c i965_media.c i965_media_h264.c \ - i965_media_mpeg2.c i965_gpe_utils.c i965_post_processing.c \ - i965_yuv_coefs.c gen8_post_processing.c i965_render.c \ - i965_vpp_avs.c gen8_render.c gen9_render.c intel_batchbuffer.c \ - intel_batchbuffer_dump.c intel_driver.c intel_memman.c \ - object_heap.c intel_media_common.c i965_output_dri.c \ - i965_output_wayland.c + gen9_vdenc.c gen75_picture_process.c gen75_vme.c \ + gen75_vpp_gpe.c gen75_vpp_vebox.c gen9_post_processing.c \ + i965_avc_bsd.c i965_avc_hw_scoreboard.c i965_avc_ildb.c \ + i965_decoder_utils.c i965_device_info.c i965_drv_video.c \ + i965_encoder.c i965_encoder_utils.c i965_media.c \ + i965_media_h264.c i965_media_mpeg2.c i965_gpe_utils.c \ + i965_post_processing.c i965_yuv_coefs.c gen8_post_processing.c \ + i965_render.c i965_vpp_avs.c gen8_render.c gen9_render.c \ + intel_batchbuffer.c intel_batchbuffer_dump.c intel_driver.c \ + intel_memman.c object_heap.c intel_media_common.c vp9_probs.c \ + gen9_vp9_encoder_kernels.c gen9_vp9_const_def.c \ + gen9_vp9_encoder.c i965_output_dri.c i965_output_wayland.c @USE_X11_TRUE@am__objects_1 = i965_drv_video_la-i965_output_dri.lo @USE_WAYLAND_TRUE@am__objects_2 = \ @USE_WAYLAND_TRUE@ i965_drv_video_la-i965_output_wayland.lo @@ -179,7 +180,7 @@ i965_drv_video_la-gen8_mfd.lo i965_drv_video_la-gen8_vme.lo \ i965_drv_video_la-gen9_vme.lo i965_drv_video_la-gen9_mfc.lo \ i965_drv_video_la-gen9_mfc_hevc.lo \ - i965_drv_video_la-gen9_mfd.lo \ + i965_drv_video_la-gen9_mfd.lo i965_drv_video_la-gen9_vdenc.lo \ i965_drv_video_la-gen75_picture_process.lo \ i965_drv_video_la-gen75_vme.lo \ i965_drv_video_la-gen75_vpp_gpe.lo \ @@ -209,7 +210,11 @@ i965_drv_video_la-intel_driver.lo \ i965_drv_video_la-intel_memman.lo \ i965_drv_video_la-object_heap.lo \ - i965_drv_video_la-intel_media_common.lo $(am__objects_1) \ + i965_drv_video_la-intel_media_common.lo \ + i965_drv_video_la-vp9_probs.lo \ + i965_drv_video_la-gen9_vp9_encoder_kernels.lo \ + i965_drv_video_la-gen9_vp9_const_def.lo \ + i965_drv_video_la-gen9_vp9_encoder.lo $(am__objects_1) \ $(am__objects_2) am_i965_drv_video_la_OBJECTS = $(am__objects_3) i965_drv_video_la_OBJECTS = $(am_i965_drv_video_la_OBJECTS) @@ -273,18 +278,20 @@ am__noinst_HEADERS_DIST = dso_utils.h gen6_mfc.h gen6_mfd.h gen6_vme.h \ gen7_mfd.h gen75_picture_process.h gen75_vpp_gpe.h \ gen75_vpp_vebox.h gen8_post_processing.h gen9_mfd.h gen9_mfc.h \ - i965_avc_bsd.h i965_avc_hw_scoreboard.h i965_avc_ildb.h \ - i965_decoder.h i965_decoder_utils.h i965_defines.h \ - i965_drv_video.h i965_encoder.h i965_encoder_utils.h \ - i965_media.h i965_media_h264.h i965_media_mpeg2.h \ - i965_mutext.h i965_gpe_utils.h i965_pciids.h \ - i965_post_processing.h i965_render.h i965_structs.h \ - i965_vpp_avs.h i965_yuv_coefs.h intel_batchbuffer.h \ - intel_batchbuffer_dump.h intel_compiler.h intel_driver.h \ - intel_media.h intel_memman.h intel_version.h object_heap.h \ - vp8_probs.h vp9_probs.h sysdeps.h va_backend_compat.h \ - i965_fourcc.h i965_output_dri.h i965_output_wayland.h \ - wayland-drm-client-protocol.h + gen9_vdenc.h i965_avc_bsd.h i965_avc_hw_scoreboard.h \ + i965_avc_ildb.h i965_decoder.h i965_decoder_utils.h \ + i965_defines.h i965_drv_video.h i965_encoder.h \ + i965_encoder_utils.h i965_media.h i965_media_h264.h \ + i965_media_mpeg2.h i965_mutext.h i965_gpe_utils.h \ + i965_pciids.h i965_post_processing.h i965_render.h \ + i965_structs.h i965_vpp_avs.h i965_yuv_coefs.h \ + intel_batchbuffer.h intel_batchbuffer_dump.h intel_compiler.h \ + intel_driver.h intel_media.h intel_memman.h intel_version.h \ + object_heap.h vp8_probs.h vp9_probs.h sysdeps.h \ + va_backend_compat.h i965_fourcc.h gen9_vp9_encoder.h \ + gen9_vp9_encapi.h gen9_vp9_const_def.h \ + gen9_vp9_encoder_kernels.h i965_output_dri.h \ + i965_output_wayland.h wayland-drm-client-protocol.h HEADERS = $(noinst_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive @@ -426,10 +433,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -482,11 +486,10 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SUBDIRS = shaders -DIST_SUBDIRS = $(SUBDIRS) wayland -EXTRA_DIST = Android.mk intel_version.h.in $(PKG_VERSION_FILE) +DIST_SUBDIRS = $(SUBDIRS) +EXTRA_DIST = Android.mk intel_version.h.in $(PKG_VERSION_FILE) \ + wayland-drm.xml $(NULL) BUILT_SOURCES = intel_version.h AM_CPPFLAGS = \ -DPTHREADS \ @@ -510,32 +513,35 @@ source_c = dso_utils.c gen6_mfc.c gen6_mfc_common.c gen6_mfd.c \ gen6_vme.c gen7_vme.c gen7_mfc.c gen7_mfd.c gen75_mfd.c \ gen75_mfc.c gen8_mfc.c gen8_mfd.c gen8_vme.c gen9_vme.c \ - gen9_mfc.c gen9_mfc_hevc.c gen9_mfd.c gen75_picture_process.c \ - gen75_vme.c gen75_vpp_gpe.c gen75_vpp_vebox.c \ - gen9_post_processing.c i965_avc_bsd.c i965_avc_hw_scoreboard.c \ - i965_avc_ildb.c i965_decoder_utils.c i965_device_info.c \ - i965_drv_video.c i965_encoder.c i965_encoder_utils.c \ - i965_media.c i965_media_h264.c i965_media_mpeg2.c \ - i965_gpe_utils.c i965_post_processing.c i965_yuv_coefs.c \ - gen8_post_processing.c i965_render.c i965_vpp_avs.c \ - gen8_render.c gen9_render.c intel_batchbuffer.c \ + gen9_mfc.c gen9_mfc_hevc.c gen9_mfd.c gen9_vdenc.c \ + gen75_picture_process.c gen75_vme.c gen75_vpp_gpe.c \ + gen75_vpp_vebox.c gen9_post_processing.c i965_avc_bsd.c \ + i965_avc_hw_scoreboard.c i965_avc_ildb.c i965_decoder_utils.c \ + i965_device_info.c i965_drv_video.c i965_encoder.c \ + i965_encoder_utils.c i965_media.c i965_media_h264.c \ + i965_media_mpeg2.c i965_gpe_utils.c i965_post_processing.c \ + i965_yuv_coefs.c gen8_post_processing.c i965_render.c \ + i965_vpp_avs.c gen8_render.c gen9_render.c intel_batchbuffer.c \ intel_batchbuffer_dump.c intel_driver.c intel_memman.c \ - object_heap.c intel_media_common.c $(NULL) $(am__append_1) \ - $(am__append_3) + object_heap.c intel_media_common.c vp9_probs.c \ + gen9_vp9_encoder_kernels.c gen9_vp9_const_def.c \ + gen9_vp9_encoder.c $(NULL) $(am__append_1) $(am__append_3) source_h = dso_utils.h gen6_mfc.h gen6_mfd.h gen6_vme.h gen7_mfd.h \ gen75_picture_process.h gen75_vpp_gpe.h gen75_vpp_vebox.h \ - gen8_post_processing.h gen9_mfd.h gen9_mfc.h i965_avc_bsd.h \ - i965_avc_hw_scoreboard.h i965_avc_ildb.h i965_decoder.h \ - i965_decoder_utils.h i965_defines.h i965_drv_video.h \ - i965_encoder.h i965_encoder_utils.h i965_media.h \ - i965_media_h264.h i965_media_mpeg2.h i965_mutext.h \ - i965_gpe_utils.h i965_pciids.h i965_post_processing.h \ - i965_render.h i965_structs.h i965_vpp_avs.h i965_yuv_coefs.h \ - intel_batchbuffer.h intel_batchbuffer_dump.h intel_compiler.h \ - intel_driver.h intel_media.h intel_memman.h intel_version.h \ - object_heap.h vp8_probs.h vp9_probs.h sysdeps.h \ - va_backend_compat.h i965_fourcc.h $(NULL) $(am__append_2) \ - $(am__append_4) + gen8_post_processing.h gen9_mfd.h gen9_mfc.h gen9_vdenc.h \ + i965_avc_bsd.h i965_avc_hw_scoreboard.h i965_avc_ildb.h \ + i965_decoder.h i965_decoder_utils.h i965_defines.h \ + i965_drv_video.h i965_encoder.h i965_encoder_utils.h \ + i965_media.h i965_media_h264.h i965_media_mpeg2.h \ + i965_mutext.h i965_gpe_utils.h i965_pciids.h \ + i965_post_processing.h i965_render.h i965_structs.h \ + i965_vpp_avs.h i965_yuv_coefs.h intel_batchbuffer.h \ + intel_batchbuffer_dump.h intel_compiler.h intel_driver.h \ + intel_media.h intel_memman.h intel_version.h object_heap.h \ + vp8_probs.h vp9_probs.h sysdeps.h va_backend_compat.h \ + i965_fourcc.h gen9_vp9_encoder.h gen9_vp9_encapi.h \ + gen9_vp9_const_def.h gen9_vp9_encoder_kernels.h $(NULL) \ + $(am__append_2) $(am__append_4) i965_drv_video_la_LTLIBRARIES = i965_drv_video.la i965_drv_video_ladir = $(LIBVA_DRIVERS_PATH) i965_drv_video_la_CFLAGS = $(driver_cflags) @@ -569,9 +575,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/Makefile + $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -674,7 +680,11 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_mfd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_post_processing.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_render.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_vdenc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_vme.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_vp9_const_def.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder_kernels.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-i965_avc_bsd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-i965_avc_hw_scoreboard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-i965_avc_ildb.Plo@am__quote@ @@ -699,6 +709,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-intel_media_common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-intel_memman.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-object_heap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_drv_video_la-vp9_probs.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -840,6 +851,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-gen9_mfd.lo `test -f 'gen9_mfd.c' || echo '$(srcdir)/'`gen9_mfd.c +i965_drv_video_la-gen9_vdenc.lo: gen9_vdenc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-gen9_vdenc.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-gen9_vdenc.Tpo -c -o i965_drv_video_la-gen9_vdenc.lo `test -f 'gen9_vdenc.c' || echo '$(srcdir)/'`gen9_vdenc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-gen9_vdenc.Tpo $(DEPDIR)/i965_drv_video_la-gen9_vdenc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gen9_vdenc.c' object='i965_drv_video_la-gen9_vdenc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-gen9_vdenc.lo `test -f 'gen9_vdenc.c' || echo '$(srcdir)/'`gen9_vdenc.c + i965_drv_video_la-gen75_picture_process.lo: gen75_picture_process.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-gen75_picture_process.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-gen75_picture_process.Tpo -c -o i965_drv_video_la-gen75_picture_process.lo `test -f 'gen75_picture_process.c' || echo '$(srcdir)/'`gen75_picture_process.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-gen75_picture_process.Tpo $(DEPDIR)/i965_drv_video_la-gen75_picture_process.Plo @@ -1050,6 +1068,34 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-intel_media_common.lo `test -f 'intel_media_common.c' || echo '$(srcdir)/'`intel_media_common.c +i965_drv_video_la-vp9_probs.lo: vp9_probs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-vp9_probs.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-vp9_probs.Tpo -c -o i965_drv_video_la-vp9_probs.lo `test -f 'vp9_probs.c' || echo '$(srcdir)/'`vp9_probs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-vp9_probs.Tpo $(DEPDIR)/i965_drv_video_la-vp9_probs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vp9_probs.c' object='i965_drv_video_la-vp9_probs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-vp9_probs.lo `test -f 'vp9_probs.c' || echo '$(srcdir)/'`vp9_probs.c + +i965_drv_video_la-gen9_vp9_encoder_kernels.lo: gen9_vp9_encoder_kernels.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-gen9_vp9_encoder_kernels.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder_kernels.Tpo -c -o i965_drv_video_la-gen9_vp9_encoder_kernels.lo `test -f 'gen9_vp9_encoder_kernels.c' || echo '$(srcdir)/'`gen9_vp9_encoder_kernels.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder_kernels.Tpo $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder_kernels.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gen9_vp9_encoder_kernels.c' object='i965_drv_video_la-gen9_vp9_encoder_kernels.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-gen9_vp9_encoder_kernels.lo `test -f 'gen9_vp9_encoder_kernels.c' || echo '$(srcdir)/'`gen9_vp9_encoder_kernels.c + +i965_drv_video_la-gen9_vp9_const_def.lo: gen9_vp9_const_def.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-gen9_vp9_const_def.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-gen9_vp9_const_def.Tpo -c -o i965_drv_video_la-gen9_vp9_const_def.lo `test -f 'gen9_vp9_const_def.c' || echo '$(srcdir)/'`gen9_vp9_const_def.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-gen9_vp9_const_def.Tpo $(DEPDIR)/i965_drv_video_la-gen9_vp9_const_def.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gen9_vp9_const_def.c' object='i965_drv_video_la-gen9_vp9_const_def.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-gen9_vp9_const_def.lo `test -f 'gen9_vp9_const_def.c' || echo '$(srcdir)/'`gen9_vp9_const_def.c + +i965_drv_video_la-gen9_vp9_encoder.lo: gen9_vp9_encoder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-gen9_vp9_encoder.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder.Tpo -c -o i965_drv_video_la-gen9_vp9_encoder.lo `test -f 'gen9_vp9_encoder.c' || echo '$(srcdir)/'`gen9_vp9_encoder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder.Tpo $(DEPDIR)/i965_drv_video_la-gen9_vp9_encoder.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gen9_vp9_encoder.c' object='i965_drv_video_la-gen9_vp9_encoder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -c -o i965_drv_video_la-gen9_vp9_encoder.lo `test -f 'gen9_vp9_encoder.c' || echo '$(srcdir)/'`gen9_vp9_encoder.c + i965_drv_video_la-i965_output_dri.lo: i965_output_dri.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(i965_drv_video_la_CFLAGS) $(CFLAGS) -MT i965_drv_video_la-i965_output_dri.lo -MD -MP -MF $(DEPDIR)/i965_drv_video_la-i965_output_dri.Tpo -c -o i965_drv_video_la-i965_output_dri.lo `test -f 'i965_output_dri.c' || echo '$(srcdir)/'`i965_output_dri.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/i965_drv_video_la-i965_output_dri.Tpo $(DEPDIR)/i965_drv_video_la-i965_output_dri.Plo @@ -1378,7 +1424,8 @@ $(PKG_VERSION_FILE): $(NEW_VERSION_FILE) @cp -f $< $@ i965_output_wayland.c: $(protocol_source_h) -@wayland_scanner_rules@ +%-client-protocol.h : %.xml + $(AM_V_GEN)$(WAYLAND_SCANNER) client-header < $< > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -Nru intel-vaapi-driver-1.6.2/src/shaders/h264/ildb/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/h264/ildb/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/h264/ildb/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/h264/ildb/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -194,10 +194,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -250,8 +247,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_ILDB_INC = \ AVC_ILDB.inc \ Child_Undefs.inc \ @@ -363,9 +358,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/h264/ildb/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/h264/ildb/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/h264/ildb/Makefile + $(AUTOMAKE) --foreign src/shaders/h264/ildb/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/h264/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/h264/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/h264/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/h264/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -254,10 +254,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -310,8 +307,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SUBDIRS = ildb mc # Extra clean files so that maintainer-clean removes *everything* @@ -328,9 +323,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/h264/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/h264/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/h264/Makefile + $(AUTOMAKE) --foreign src/shaders/h264/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/h264/mc/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/h264/mc/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/h264/mc/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/h264/mc/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_G4I = INTEL_G4A = null.g4a INTEL_G4B = null.g4b @@ -449,9 +444,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/h264/mc/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/h264/mc/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/h264/mc/Makefile + $(AUTOMAKE) --foreign src/shaders/h264/mc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -254,10 +254,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -310,8 +307,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SUBDIRS = h264 mpeg2 render post_processing vme utils EXTRA_DIST = gpp.py @@ -329,9 +324,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/Makefile + $(AUTOMAKE) --foreign src/shaders/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/mpeg2/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/mpeg2/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/mpeg2/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/mpeg2/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -254,10 +254,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -310,8 +307,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SUBDIRS = vld # Extra clean files so that maintainer-clean removes *everything* @@ -328,9 +323,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/mpeg2/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/mpeg2/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/mpeg2/Makefile + $(AUTOMAKE) --foreign src/shaders/mpeg2/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/mpeg2/vld/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/mpeg2/vld/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/mpeg2/vld/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/mpeg2/vld/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_G4I = \ addidct.g4i \ do_iq_intra.g4i \ @@ -369,9 +364,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/mpeg2/vld/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/mpeg2/vld/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/mpeg2/vld/Makefile + $(AUTOMAKE) --foreign src/shaders/mpeg2/vld/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen5_6/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen5_6/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen5_6/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen5_6/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_G4I = INTEL_G4A = null.g4a INTEL_G4B = null.g4b @@ -412,9 +407,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/gen5_6/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/gen5_6/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/gen5_6/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/gen5_6/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/avs.g75b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/avs.g75b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/avs.g75b 2015-12-15 06:01:03.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/avs.g75b 2016-06-16 00:57:56.000000000 +0000 @@ -532,86 +532,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/avs.g7b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/avs.g7b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/avs.g7b 2015-12-15 06:01:03.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/avs.g7b 2016-06-16 00:57:56.000000000 +0000 @@ -532,86 +532,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_PP_G7B = \ avs.g7b \ dndi.g7b \ @@ -352,9 +347,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/gen7/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/gen7/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/gen7/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/gen7/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pa_to_pl2.g75b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pa_to_pl2.g75b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pa_to_pl2.g75b 2015-12-15 06:01:03.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pa_to_pl2.g75b 2016-06-16 00:57:56.000000000 +0000 @@ -512,86 +512,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pa_to_pl2.g7b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pa_to_pl2.g7b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pa_to_pl2.g7b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pa_to_pl2.g7b 2016-06-16 00:57:56.000000000 +0000 @@ -512,86 +512,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl2_to_pl2.g75b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl2_to_pl2.g75b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl2_to_pl2.g75b 2015-12-15 06:01:03.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl2_to_pl2.g75b 2016-06-16 00:57:56.000000000 +0000 @@ -532,86 +532,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl2_to_pl2.g7b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl2_to_pl2.g7b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl2_to_pl2.g7b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl2_to_pl2.g7b 2016-06-16 00:57:56.000000000 +0000 @@ -532,86 +532,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl3_to_pl2.g75b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl3_to_pl2.g75b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl3_to_pl2.g75b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl3_to_pl2.g75b 2016-06-16 00:57:56.000000000 +0000 @@ -544,86 +544,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl3_to_pl2.g7b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl3_to_pl2.g7b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/pl3_to_pl2.g7b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/pl3_to_pl2.g7b 2016-06-16 00:57:56.000000000 +0000 @@ -544,86 +544,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/rgbx_to_nv12.g75b 2016-06-16 00:57:56.000000000 +0000 @@ -937,86 +937,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/rgbx_to_nv12.g7b 2016-06-16 00:57:56.000000000 +0000 @@ -937,86 +937,36 @@ { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, { 0x80800040, 0xa4002d29, 0x00b18400, 0x00800080 }, { 0x80800040, 0xa4202d29, 0x00b18420, 0x00800080 }, { 0x80800040, 0xa4402d29, 0x00b18440, 0x00800080 }, { 0x80800040, 0xa4602d29, 0x00b18460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae8800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae8820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae8840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae8860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xc8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae8000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae8020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae8040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae8060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22002da8, 0x006902c0, 0x04000400 }, + { 0x80600040, 0xc8002d29, 0x00ae8800, 0x00800080 }, + { 0x80600040, 0xc8402d29, 0x00ae8840, 0x00800080 }, + { 0x80600040, 0xc0002d29, 0x00ae8000, 0x00800080 }, + { 0x80600040, 0xc0402d29, 0x00ae8040, 0x00800080 }, { 0x80800040, 0xb4002d29, 0x00b19400, 0x00800080 }, { 0x80800040, 0xb4202d29, 0x00b19420, 0x00800080 }, { 0x80800040, 0xb4402d29, 0x00b19440, 0x00800080 }, { 0x80800040, 0xb4602d29, 0x00b19460, 0x00800080 }, - { 0x00600008, 0x45c03d29, 0x00ae9800, 0x00010001 }, - { 0x00600008, 0x45e03d29, 0x00ae9820, 0x00010001 }, - { 0x00600008, 0x46003d29, 0x00ae9840, 0x00010001 }, - { 0x00600008, 0x46203d29, 0x00ae9860, 0x00010001 }, - { 0x00600040, 0x45c02529, 0x00ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xd8002d29, 0x00ae05c0, 0x00800080 }, - { 0x00600040, 0x46002529, 0x00ae0600, 0x00ae0620 }, - { 0x80600040, 0xd8402d29, 0x00ae0600, 0x00800080 }, - { 0x00600008, 0x46403d29, 0x00ae9000, 0x00010001 }, - { 0x00600008, 0x46603d29, 0x00ae9020, 0x00010001 }, - { 0x00600008, 0x46803d29, 0x00ae9040, 0x00010001 }, - { 0x00600008, 0x46a03d29, 0x00ae9060, 0x00010001 }, - { 0x00600040, 0x46402529, 0x00ae0640, 0x00ae0660 }, - { 0x80600040, 0xd0002d29, 0x00ae0640, 0x00800080 }, - { 0x00600040, 0x46802529, 0x00ae0680, 0x00ae06a0 }, - { 0x80600040, 0xd0402d29, 0x00ae0680, 0x00800080 }, - { 0x00400040, 0x22082da8, 0x006902c0, 0x06000600 }, + { 0x80600040, 0xd8002d29, 0x00ae9800, 0x00800080 }, + { 0x80600040, 0xd8402d29, 0x00ae9840, 0x00800080 }, + { 0x80600040, 0xd0002d29, 0x00ae9000, 0x00800080 }, + { 0x80600040, 0xd0402d29, 0x00ae9040, 0x00800080 }, { 0x00400040, 0x22002da8, 0x006902c0, 0x00000000 }, { 0x00400040, 0x22082da8, 0x006902c0, 0x02000200 }, { 0x00800401, 0x23a00231, 0x00d28401, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen7/Save_AVS_NV12.g4a 2016-06-16 00:57:46.000000000 +0000 @@ -460,29 +460,12 @@ add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw + add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers //Y Rounding, 16x4 bottom part @@ -492,30 +475,14 @@ add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw + add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers + //Y Rounding 16x4 top part add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw @@ -523,31 +490,12 @@ add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - - add (4) a0.0:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers - + add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw + //Y Rounding, 16x4 bottom part add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw add.sat (16) r[a0.5,32]<1>:uw r[a0.5,32]<16;16,1>:uw 0x0080:uw @@ -555,30 +503,12 @@ add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw - + add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - - add (4) a0.4:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers + add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw + // restore pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4 registers add (4) a0.0:uw r22.0<4;4,1>:w 0:uw add (4) a0.4:uw r22.0<4;4,1>:w 512:uw diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen75/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen75/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen75/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen75/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -194,10 +194,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -250,8 +247,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_PP_PRE_G75B = \ sharpening_h_blur.g75b \ sharpening_unmask.g75b \ @@ -273,9 +268,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/gen75/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/gen75/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/gen75/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/gen75/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_PP_G8B = \ pl2_to_pl2.g8b \ pl2_to_pl3.g8b \ @@ -327,9 +322,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/gen8/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/gen8/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/gen8/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/gen8/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pa_to_pl2.g8b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pa_to_pl2.g8b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pa_to_pl2.g8b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pa_to_pl2.g8b 2016-06-16 00:57:56.000000000 +0000 @@ -114,86 +114,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pl2_to_pl2.g8b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pl2_to_pl2.g8b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pl2_to_pl2.g8b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pl2_to_pl2.g8b 2016-06-16 00:57:56.000000000 +0000 @@ -122,86 +122,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pl3_to_pl2.g8b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pl3_to_pl2.g8b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/pl3_to_pl2.g8b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/pl3_to_pl2.g8b 2016-06-16 00:57:56.000000000 +0000 @@ -138,86 +138,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/rgbx_to_nv12.g8b 2016-06-16 00:57:56.000000000 +0000 @@ -539,86 +539,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen8/Save_AVS_NV12.g8a 2016-06-16 00:57:46.000000000 +0000 @@ -438,28 +438,12 @@ add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers @@ -470,30 +454,15 @@ add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers + //Y Rounding 16x4 top part add.sat (16) r[a0.1,0]<1>:uw r[a0.1,0]<16;16,1>:uw 0x0080:uw add.sat (16) r[a0.1,32]<1>:uw r[a0.1,32]<16;16,1>:uw 0x0080:uw @@ -501,30 +470,12 @@ add.sat (16) r[a0.1,96]<1>:uw r[a0.1,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(0,0)<2> r[a0.2,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.2,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.2,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.2,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.2,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.2,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.2,0]<2>:uw r[a0.2,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.2,64]<2>:uw r[a0.2,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 top part - shr (8) uwBUFFER_5(4,0)<2> r[a0.0,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.0,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.0,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.0,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.0,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.0,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - - add (4) a0.0<1>:uw r22.0<4;4,1>:w 1024:uw //Update Buffer 2 pointers + add.sat (8) r[a0.0,0]<2>:uw r[a0.0,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.0,64]<2>:uw r[a0.0,64]<16;8,2>:uw 0x0080:uw //Y Rounding, 16x4 bottom part add.sat (16) r[a0.5,0]<1>:uw r[a0.5,0]<16;16,1>:uw 0x0080:uw @@ -533,30 +484,13 @@ add.sat (16) r[a0.5,96]<1>:uw r[a0.5,96]<16;16,1>:uw 0x0080:uw // U Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(0,0)<2> r[a0.6,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(1,0)<2> r[a0.6,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(2,0)<2> r[a0.6,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(3,0)<2> r[a0.6,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(0,0)<2> uwBUFFER_5(0,0)<16;8,2> uwBUFFER_5(1,0)<16;8,2> - add.sat (8) r[a0.6,0]<2>:uw uwBUFFER_5(0,0)<16;8,2> 0x0080:uw - - add (8) uwBUFFER_5(2,0)<2> uwBUFFER_5(2,0)<16;8,2> uwBUFFER_5(3,0)<16;8,2> - add.sat (8) r[a0.6,64]<2>:uw uwBUFFER_5(2,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.6,0]<2>:uw r[a0.6,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.6,64]<2>:uw r[a0.6,64]<16;8,2>:uw 0x0080:uw // V Averaging and Rounding, 8x2 bottom part - shr (8) uwBUFFER_5(4,0)<2> r[a0.4,0]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(5,0)<2> r[a0.4,32]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(6,0)<2> r[a0.4,64]<16;8,2>:uw 1:w - shr (8) uwBUFFER_5(7,0)<2> r[a0.4,96]<16;8,2>:uw 1:w - - add (8) uwBUFFER_5(4,0)<2> uwBUFFER_5(4,0)<16;8,2> uwBUFFER_5(5,0)<16;8,2> - add.sat (8) r[a0.4,0]<2>:uw uwBUFFER_5(4,0)<16;8,2> 0x0080:uw + add.sat (8) r[a0.4,0]<2>:uw r[a0.4,0]<16;8,2>:uw 0x0080:uw + add.sat (8) r[a0.4,64]<2>:uw r[a0.4,64]<16;8,2>:uw 0x0080:uw - add (8) uwBUFFER_5(6,0)<2> uwBUFFER_5(6,0)<16;8,2> uwBUFFER_5(7,0)<16;8,2> - add.sat (8) r[a0.4,64]<2>:uw uwBUFFER_5(6,0)<16;8,2> 0x0080:uw - - add (4) a0.4<1>:uw r22.0<4;4,1>:w 1536:uw //Update Buffer 3 pointers // restore pBUF_CHNL_TOP_8x4 and pBUF_CHNL_BOT_8x4 registers add (4) a0.0<1>:uw r22.0<4;4,1>:w 0:uw add (4) a0.4<1>:uw r22.0<4;4,1>:w 512:uw diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/Makefile.in 2015-12-15 06:00:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -195,10 +195,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -251,8 +248,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SRCDIR = $(top_srcdir)/src/shaders/post_processing/gen8 INTEL_PP_G9B = \ pl2_to_pl2.g9b \ @@ -322,9 +317,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/gen9/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/gen9/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/gen9/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/gen9/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pa_to_pl2.g9b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pa_to_pl2.g9b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pa_to_pl2.g9b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pa_to_pl2.g9b 2016-06-16 00:57:56.000000000 +0000 @@ -114,86 +114,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pl2_to_pl2.g9b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pl2_to_pl2.g9b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pl2_to_pl2.g9b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pl2_to_pl2.g9b 2016-06-16 00:57:56.000000000 +0000 @@ -122,86 +122,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pl3_to_pl2.g9b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pl3_to_pl2.g9b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/pl3_to_pl2.g9b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/pl3_to_pl2.g9b 2016-06-16 00:57:56.000000000 +0000 @@ -138,86 +138,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b 2015-12-15 06:01:04.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/gen9/rgbx_to_nv12.g9b 2016-06-16 00:57:56.000000000 +0000 @@ -539,86 +539,36 @@ { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, { 0x80800040, 0xa2001248, 0x16b18200, 0x00800080 }, { 0x80800040, 0xa2201248, 0x16b18220, 0x00800080 }, { 0x80800040, 0xa2401248, 0x16b18240, 0x00800080 }, { 0x80800040, 0xa2601248, 0x16b18260, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8400, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8420, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8440, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8460, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xc4001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xc4401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8000, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8020, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8040, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8060, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc0001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc0401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22001a40, 0x166902c0, 0x04000400 }, + { 0x80600040, 0xc4001248, 0x16ae8400, 0x00800080 }, + { 0x80600040, 0xc4401248, 0x16ae8440, 0x00800080 }, + { 0x80600040, 0xc0001248, 0x16ae8000, 0x00800080 }, + { 0x80600040, 0xc0401248, 0x16ae8040, 0x00800080 }, { 0x80800040, 0xaa001248, 0x16b18a00, 0x00800080 }, { 0x80800040, 0xaa201248, 0x16b18a20, 0x00800080 }, { 0x80800040, 0xaa401248, 0x16b18a40, 0x00800080 }, { 0x80800040, 0xaa601248, 0x16b18a60, 0x00800080 }, - { 0x00600008, 0x45c01248, 0x1eae8c00, 0x00010001 }, - { 0x00600008, 0x45e01248, 0x1eae8c20, 0x00010001 }, - { 0x00600008, 0x46001248, 0x1eae8c40, 0x00010001 }, - { 0x00600008, 0x46201248, 0x1eae8c60, 0x00010001 }, - { 0x00600040, 0x45c01248, 0x12ae05c0, 0x00ae05e0 }, - { 0x80600040, 0xcc001248, 0x16ae05c0, 0x00800080 }, - { 0x00600040, 0x46001248, 0x12ae0600, 0x00ae0620 }, - { 0x80600040, 0xcc401248, 0x16ae0600, 0x00800080 }, - { 0x00600008, 0x46401248, 0x1eae8800, 0x00010001 }, - { 0x00600008, 0x46601248, 0x1eae8820, 0x00010001 }, - { 0x00600008, 0x46801248, 0x1eae8840, 0x00010001 }, - { 0x00600008, 0x46a01248, 0x1eae8860, 0x00010001 }, - { 0x00600040, 0x46401248, 0x12ae0640, 0x00ae0660 }, - { 0x80600040, 0xc8001248, 0x16ae0640, 0x00800080 }, - { 0x00600040, 0x46801248, 0x12ae0680, 0x00ae06a0 }, - { 0x80600040, 0xc8401248, 0x16ae0680, 0x00800080 }, - { 0x00400040, 0x22081a40, 0x166902c0, 0x06000600 }, + { 0x80600040, 0xcc001248, 0x16ae8c00, 0x00800080 }, + { 0x80600040, 0xcc401248, 0x16ae8c40, 0x00800080 }, + { 0x80600040, 0xc8001248, 0x16ae8800, 0x00800080 }, + { 0x80600040, 0xc8401248, 0x16ae8840, 0x00800080 }, { 0x00400040, 0x22001a40, 0x166902c0, 0x00000000 }, { 0x00400040, 0x22081a40, 0x166902c0, 0x02000200 }, { 0x00800201, 0x23a02288, 0x00d28201, 0x00000000 }, diff -Nru intel-vaapi-driver-1.6.2/src/shaders/post_processing/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/post_processing/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/post_processing/Makefile.in 2015-12-15 06:00:48.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/post_processing/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -254,10 +254,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -310,8 +307,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ SUBDIRS = gen5_6 gen7 gen75 gen8 gen9 # Extra clean files so that maintainer-clean removes *everything* @@ -328,9 +323,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/post_processing/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/post_processing/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/post_processing/Makefile + $(AUTOMAKE) --foreign src/shaders/post_processing/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/render/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/render/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/render/Makefile.in 2015-12-15 06:00:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/render/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -198,10 +198,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -254,8 +251,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ INTEL_G4I = \ exa_wm.g4i \ exa_wm_affine.g4i \ @@ -418,9 +413,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/render/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/render/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/render/Makefile + $(AUTOMAKE) --foreign src/shaders/render/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/utils/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/utils/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/utils/Makefile.in 2015-12-15 06:00:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/utils/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -196,10 +196,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -252,8 +249,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ MFC_CORE = \ end_thread.asm \ mfc_batchbuffer_head.asm \ @@ -319,9 +314,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/utils/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/utils/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/utils/Makefile + $(AUTOMAKE) --foreign src/shaders/utils/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/shaders/vme/Makefile.in intel-vaapi-driver-1.7.1/src/shaders/vme/Makefile.in --- intel-vaapi-driver-1.6.2/src/shaders/vme/Makefile.in 2015-12-15 06:00:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/shaders/vme/Makefile.in 2016-06-21 02:07:53.000000000 +0000 @@ -196,10 +196,7 @@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ +WAYLAND_SCANNER = @WAYLAND_SCANNER@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -252,8 +249,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ VME_CORE = batchbuffer.asm intra_frame.asm inter_frame.asm VME7_CORE = batchbuffer.asm intra_frame_ivb.asm inter_frame_ivb.asm inter_bframe_ivb.asm mpeg2_inter_ivb.asm VME75_CORE = batchbuffer.asm intra_frame_haswell.asm inter_frame_haswell.asm inter_bframe_haswell.asm mpeg2_inter_haswell.asm @@ -321,9 +316,9 @@ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/shaders/vme/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shaders/vme/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/shaders/vme/Makefile + $(AUTOMAKE) --foreign src/shaders/vme/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ diff -Nru intel-vaapi-driver-1.6.2/src/.VERSION.pkg intel-vaapi-driver-1.7.1/src/.VERSION.pkg --- intel-vaapi-driver-1.6.2/src/.VERSION.pkg 2015-12-15 06:01:59.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/.VERSION.pkg 2016-06-21 02:07:56.000000000 +0000 @@ -1 +1 @@ -1.6.2 +1.7.1 diff -Nru intel-vaapi-driver-1.6.2/src/vp9_probs.c intel-vaapi-driver-1.7.1/src/vp9_probs.c --- intel-vaapi-driver-1.6.2/src/vp9_probs.c 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/vp9_probs.c 2016-06-16 00:57:46.000000000 +0000 @@ -0,0 +1,1106 @@ +/* + * Copyright © 2016 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Authors: + * Zhao Yakui + */ +/* + * This file defines some vp9 probability tables, and + * they are ported from libvpx (https://github.com/webmproject/libvpx/). + * The original copyright and licence statement as below. + */ + +/* + * Copyright (c) 2010 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#include +#include +#include +#include "vp9_probs.h" +#include "i965_drv_video.h" +#include + +struct tx_probs default_tx_probs = { + { { 100 }, + { 66 } }, + + { { 20, 152 }, + { 15, 101 } }, + + { { 3, 136, 37 }, + { 5, 52, 13 } }, +}; + +vp9_prob default_skip_probs[SKIP_CONTEXTS] = { + 192, 128, 64 +}; + +vp9_prob default_inter_mode_probs[INTER_MODE_CONTEXTS] + [INTER_MODES - 1] = { + {2, 173, 34}, // 0 = both zero mv + {7, 145, 85}, // 1 = one zero mv + one a predicted mv + {7, 166, 63}, // 2 = two predicted mvs + {7, 94, 66}, // 3 = one predicted/zero and one new mv + {8, 64, 46}, // 4 = two new mvs + {17, 81, 31}, // 5 = one intra neighbour + x + {25, 29, 30}, // 6 = two intra neighbours +}; + +vp9_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS - 1] = { + { 235, 162, }, + { 36, 255, }, + { 34, 3, }, + { 149, 144, }, +}; + +vp9_prob default_intra_inter_p[INTRA_INTER_CONTEXTS] = { + 9, 102, 187, 225 +}; + +vp9_prob default_comp_inter_p[COMP_INTER_CONTEXTS] = { + 239, 183, 119, 96, 41 +}; + +vp9_prob default_single_ref_p[REF_CONTEXTS][2] = { + { 33, 16 }, + { 77, 74 }, + { 142, 142 }, + { 172, 170 }, + { 238, 247 } +}; + +vp9_prob default_comp_ref_p[REF_CONTEXTS] = { + 50, 126, 123, 221, 226 +}; + +vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1] = { + { 144, 11, 54, 157, 195, 130, 46, 58, 108 }, // y = dc + { 118, 15, 123, 148, 131, 101, 44, 93, 131 }, // y = v + { 113, 12, 23, 188, 226, 142, 26, 32, 125 }, // y = h + { 120, 11, 50, 123, 163, 135, 64, 77, 103 }, // y = d45 + { 113, 9, 36, 155, 111, 157, 32, 44, 161 }, // y = d135 + { 116, 9, 55, 176, 76, 96, 37, 61, 149 }, // y = d117 + { 115, 9, 28, 141, 161, 167, 21, 25, 193 }, // y = d153 + { 120, 12, 32, 145, 195, 142, 32, 38, 86 }, // y = d207 + { 116, 12, 64, 120, 140, 125, 49, 115, 121 }, // y = d63 + { 102, 19, 66, 162, 182, 122, 35, 59, 128 } // y = tm +}; + +vp9_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = { + { 65, 32, 18, 144, 162, 194, 41, 51, 98 }, // block_size < 8x8 + { 132, 68, 18, 165, 217, 196, 45, 40, 78 }, // block_size < 16x16 + { 173, 80, 19, 176, 240, 193, 64, 35, 46 }, // block_size < 32x32 + { 221, 135, 38, 194, 248, 121, 96, 85, 29 } // block_size >= 32x32 +}; + +vp9_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1] = { + { 120, 7, 76, 176, 208, 126, 28, 54, 103 }, // y = dc + { 48, 12, 154, 155, 139, 90, 34, 117, 119 }, // y = v + { 67, 6, 25, 204, 243, 158, 13, 21, 96 }, // y = h + { 97, 5, 44, 131, 176, 139, 48, 68, 97 }, // y = d45 + { 83, 5, 42, 156, 111, 152, 26, 49, 152 }, // y = d135 + { 80, 5, 58, 178, 74, 83, 33, 62, 145 }, // y = d117 + { 86, 5, 32, 154, 192, 168, 14, 22, 163 }, // y = d153 + { 85, 5, 32, 156, 216, 148, 19, 29, 73 }, // y = d207 + { 77, 7, 64, 116, 132, 122, 37, 126, 120 }, // y = d63 + { 101, 21, 107, 181, 192, 103, 19, 67, 125 } // y = tm +}; + +vp9_prob default_seg_tree_probs[SEG_TREE_PROBS] = { + 255, 255, 255, 255, 255, 255, 255 +}; + +vp9_prob default_seg_pred_probs[PREDICTION_PROBS] = { + 255, 255, 255 +}; + +vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS] + [PARTITION_TYPES - 1] = { + // 8x8 -> 4x4 + { 158, 97, 94 }, // a/l both not split + { 93, 24, 99 }, // a split, l not split + { 85, 119, 44 }, // l split, a not split + { 62, 59, 67 }, // a/l both split + // 16x16 -> 8x8 + { 149, 53, 53 }, // a/l both not split + { 94, 20, 48 }, // a split, l not split + { 83, 53, 24 }, // l split, a not split + { 52, 18, 18 }, // a/l both split + // 32x32 -> 16x16 + { 150, 40, 39 }, // a/l both not split + { 78, 12, 26 }, // a split, l not split + { 67, 33, 11 }, // l split, a not split + { 24, 7, 5 }, // a/l both split + // 64x64 -> 32x32 + { 174, 35, 49 }, // a/l both not split + { 68, 11, 27 }, // a split, l not split + { 57, 15, 9 }, // l split, a not split + { 12, 3, 3 }, // a/l both split +}; + +vp9_prob default_partition_probs[PARTITION_CONTEXTS] + [PARTITION_TYPES - 1] = { + // 8x8 -> 4x4 + { 199, 122, 141 }, // a/l both not split + { 147, 63, 159 }, // a split, l not split + { 148, 133, 118 }, // l split, a not split + { 121, 104, 114 }, // a/l both split + // 16x16 -> 8x8 + { 174, 73, 87 }, // a/l both not split + { 92, 41, 83 }, // a split, l not split + { 82, 99, 50 }, // l split, a not split + { 53, 39, 39 }, // a/l both split + // 32x32 -> 16x16 + { 177, 58, 59 }, // a/l both not split + { 68, 26, 63 }, // a split, l not split + { 52, 79, 25 }, // l split, a not split + { 17, 14, 12 }, // a/l both split + // 64x64 -> 32x32 + { 222, 34, 30 }, // a/l both not split + { 72, 16, 44 }, // a split, l not split + { 58, 32, 12 }, // l split, a not split + { 10, 7, 6 }, // a/l both split +}; + +//Rearranged the values for better usage +nmv_context default_nmv_context = { + {32, 64, 96}, + { + { // Vertical component + 128, // sign + {224, 144, 192, 168, 192, 176, 192, 198, 198, 245}, // class + {216}, // class0 + {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits + }, + { // Horizontal component + 128, // sign + {216, 128, 176, 160, 176, 176, 192, 198, 198, 208}, // class + {208}, // class0 + {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits + } + }, + {{128, 128, 64}, {96, 112, 64}}, // class0_fp0 + {64, 96, 64}, // fp0 + {{128, 128, 64}, {96, 112, 64}}, // class0_fp1 + {64, 96, 64}, // fp1 + {160, 128}, // class0_hp bit + {160, 128} // hp + +}; + +//Rearranged the coeff probs for better usage +vp9_prob default_coef_probs_4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { + // Y plane - Intra + // Band 0 + { 195, 29, 183 }, { 84, 49, 136 }, { 8, 42, 71 }, + // Band 1 + { 31, 107, 169 }, { 35, 99, 159 }, { 17, 82, 140 }, + { 8, 66, 114 }, { 2, 44, 76 }, { 1, 19, 32 }, + // Band 2 + { 40, 132, 201 }, { 29, 114, 187 }, { 13, 91, 157 }, + { 7, 75, 127 }, { 3, 58, 95 }, { 1, 28, 47 }, + // Band 3 + { 69, 142, 221 }, { 42, 122, 201 }, { 15, 91, 159 }, + { 6, 67, 121 }, { 1, 42, 77 }, { 1, 17, 31 }, + // Band 4 + { 102, 148, 228 }, { 67, 117, 204 }, { 17, 82, 154 }, + { 6, 59, 114 }, { 2, 39, 75 }, { 1, 15, 29 }, + // Band 5 + { 156, 57, 233 }, { 119, 57, 212 }, { 58, 48, 163 }, + { 29, 40, 124 }, { 12, 30, 81 }, { 3, 12, 31 }, + + // Y plane - Inter + // Band 0 + { 191, 107, 226 }, { 124, 117, 204 }, { 25, 99, 155 }, + // Band 1 + { 29, 148, 210 }, { 37, 126, 194 }, { 8, 93, 157 }, + { 2, 68, 118 }, { 1, 39, 69 }, { 1, 17, 33 }, + // Band 2 + { 41, 151, 213 }, { 27, 123, 193 }, { 3, 82, 144 }, + { 1, 58, 105 }, { 1, 32, 60 }, { 1, 13, 26 }, + // Band 3 + { 59, 159, 220 }, { 23, 126, 198 }, { 4, 88, 151 }, + { 1, 66, 114 }, { 1, 38, 71 }, { 1, 18, 34 }, + // Band 4 + { 114, 136, 232 }, { 51, 114, 207 }, { 11, 83, 155 }, + { 3, 56, 105 }, { 1, 33, 65 }, { 1, 17, 34 }, + // Band 5 + { 149, 65, 234 }, { 121, 57, 215 }, { 61, 49, 166 }, + { 28, 36, 114 }, { 12, 25, 76 }, { 3, 16, 42 }, + + // UV plane - Intra + // Band 0 + { 214, 49, 220 }, { 132, 63, 188 }, { 42, 65, 137 }, + // Band 1 + { 85, 137, 221 }, { 104, 131, 216 }, { 49, 111, 192 }, + { 21, 87, 155 }, { 2, 49, 87 }, { 1, 16, 28 }, + // Band 2 + { 89, 163, 230 }, { 90, 137, 220 }, { 29, 100, 183 }, + { 10, 70, 135 }, { 2, 42, 81 }, { 1, 17, 33 }, + // Band 3 + { 108, 167, 237 }, { 55, 133, 222 }, { 15, 97, 179 }, + { 4, 72, 135 }, { 1, 45, 85 }, { 1, 19, 38 }, + // Band 4 + { 124, 146, 240 }, { 66, 124, 224 }, { 17, 88, 175 }, + { 4, 58, 122 }, { 1, 36, 75 }, { 1, 18, 37 }, + // Band 5 + { 141, 79, 241 }, { 126, 70, 227 }, { 66, 58, 182 }, + { 30, 44, 136 }, { 12, 34, 96 }, { 2, 20, 47 }, + + // UV plane - Inter + // Band 0 + { 229, 99, 249 }, { 143, 111, 235 }, { 46, 109, 192 }, + // Band 1 + { 82, 158, 236 }, { 94, 146, 224 }, { 25, 117, 191 }, + { 9, 87, 149 }, { 3, 56, 99 }, { 1, 33, 57 }, + // Band 2 + { 83, 167, 237 }, { 68, 145, 222 }, { 10, 103, 177 }, + { 2, 72, 131 }, { 1, 41, 79 }, { 1, 20, 39 }, + // Band 3 + { 99, 167, 239 }, { 47, 141, 224 }, { 10, 104, 178 }, + { 2, 73, 133 }, { 1, 44, 85 }, { 1, 22, 47 }, + // Band 4 + { 127, 145, 243 }, { 71, 129, 228 }, { 17, 93, 177 }, + { 3, 61, 124 }, { 1, 41, 84 }, { 1, 21, 52 }, + // Band 5 + { 157, 78, 244 }, { 140, 72, 231 }, { 69, 58, 184 }, + { 31, 44, 137 }, { 14, 38, 105 }, { 8, 23, 61 } +}; + +vp9_prob default_coef_probs_8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { + // Y plane - Intra + // Band 0 + { 125, 34, 187 }, { 52, 41, 133 }, { 6, 31, 56 }, + // Band 1 + { 37, 109, 153 }, { 51, 102, 147 }, { 23, 87, 128 }, + { 8, 67, 101 }, { 1, 41, 63 }, { 1, 19, 29 }, + // Band 2 + { 31, 154, 185 }, { 17, 127, 175 }, { 6, 96, 145 }, + { 2, 73, 114 }, { 1, 51, 82 }, { 1, 28, 45 }, + // Band 3 + { 23, 163, 200 }, { 10, 131, 185 }, { 2, 93, 148 }, + { 1, 67, 111 }, { 1, 41, 69 }, { 1, 14, 24 }, + // Band 4 + { 29, 176, 217 }, { 12, 145, 201 }, { 3, 101, 156 }, + { 1, 69, 111 }, { 1, 39, 63 }, { 1, 14, 23 }, + // Band 5 + { 57, 192, 233 }, { 25, 154, 215 }, { 6, 109, 167 }, + { 3, 78, 118 }, { 1, 48, 69 }, { 1, 21, 29 }, + + // Y plane - Inter + // Band 0 + { 202, 105, 245 }, { 108, 106, 216 }, { 18, 90, 144 }, + // Band 1 + { 33, 172, 219 }, { 64, 149, 206 }, { 14, 117, 177 }, + { 5, 90, 141 }, { 2, 61, 95 }, { 1, 37, 57 }, + // Band 2 + { 33, 179, 220 }, { 11, 140, 198 }, { 1, 89, 148 }, + { 1, 60, 104 }, { 1, 33, 57 }, { 1, 12, 21 }, + // Band 3 + { 30, 181, 221 }, { 8, 141, 198 }, { 1, 87, 145 }, + { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 20 }, + // Band 4 + { 32, 186, 224 }, { 7, 142, 198 }, { 1, 86, 143 }, + { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 22 }, + // Band 5 + { 57, 192, 227 }, { 20, 143, 204 }, { 3, 96, 154 }, + { 1, 68, 112 }, { 1, 42, 69 }, { 1, 19, 32 }, + + // UV plane - Intra + // Band 0 + { 212, 35, 215 }, { 113, 47, 169 }, { 29, 48, 105 }, + // Band 1 + { 74, 129, 203 }, { 106, 120, 203 }, { 49, 107, 178 }, + { 19, 84, 144 }, { 4, 50, 84 }, { 1, 15, 25 }, + // Band 2 + { 71, 172, 217 }, { 44, 141, 209 }, { 15, 102, 173 }, + { 6, 76, 133 }, { 2, 51, 89 }, { 1, 24, 42 }, + // Band 3 + { 64, 185, 231 }, { 31, 148, 216 }, { 8, 103, 175 }, + { 3, 74, 131 }, { 1, 46, 81 }, { 1, 18, 30 }, + // Band 4 + { 65, 196, 235 }, { 25, 157, 221 }, { 5, 105, 174 }, + { 1, 67, 120 }, { 1, 38, 69 }, { 1, 15, 30 }, + // Band 5 + { 65, 204, 238 }, { 30, 156, 224 }, { 7, 107, 177 }, + { 2, 70, 124 }, { 1, 42, 73 }, { 1, 18, 34 }, + + // UV Plane - Inter + // Band 0 + { 225, 86, 251 }, { 144, 104, 235 }, { 42, 99, 181 }, + // Band 1 + { 85, 175, 239 }, { 112, 165, 229 }, { 29, 136, 200 }, + { 12, 103, 162 }, { 6, 77, 123 }, { 2, 53, 84 }, + // Band 2 + { 75, 183, 239 }, { 30, 155, 221 }, { 3, 106, 171 }, + { 1, 74, 128 }, { 1, 44, 76 }, { 1, 17, 28 }, + // Band 3 + { 73, 185, 240 }, { 27, 159, 222 }, { 2, 107, 172 }, + { 1, 75, 127 }, { 1, 42, 73 }, { 1, 17, 29 }, + // Band 4 + { 62, 190, 238 }, { 21, 159, 222 }, { 2, 107, 172 }, + { 1, 72, 122 }, { 1, 40, 71 }, { 1, 18, 32 }, + // Band 5 + { 61, 199, 240 }, { 27, 161, 226 }, { 4, 113, 180 }, + { 1, 76, 129 }, { 1, 46, 80 }, { 1, 23, 41 } +}; + +vp9_prob default_coef_probs_16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { + // Y plane - Intra + // Band 0 + { 7, 27, 153 }, { 5, 30, 95 }, { 1, 16, 30 }, + // Band 1 + { 50, 75, 127 }, { 57, 75, 124 }, { 27, 67, 108 }, + { 10, 54, 86 }, { 1, 33, 52 }, { 1, 12, 18 }, + // Band 2 + { 43, 125, 151 }, { 26, 108, 148 }, { 7, 83, 122 }, + { 2, 59, 89 }, { 1, 38, 60 }, { 1, 17, 27 }, + // Band 3 + { 23, 144, 163 }, { 13, 112, 154 }, { 2, 75, 117 }, + { 1, 50, 81 }, { 1, 31, 51 }, { 1, 14, 23 }, + // Band 4 + { 18, 162, 185 }, { 6, 123, 171 }, { 1, 78, 125 }, + { 1, 51, 86 }, { 1, 31, 54 }, { 1, 14, 23 }, + // Band 5 + { 15, 199, 227 }, { 3, 150, 204 }, { 1, 91, 146 }, + { 1, 55, 95 }, { 1, 30, 53 }, { 1, 11, 20 }, + + // Y plane - Inter + // Band 0 + { 19, 55, 240 }, { 19, 59, 196 }, { 3, 52, 105 }, + // Band 1 + { 41, 166, 207 }, { 104, 153, 199 }, { 31, 123, 181 }, + { 14, 101, 152 }, { 5, 72, 106 }, { 1, 36, 52 }, + // Band 2 + { 35, 176, 211 }, { 12, 131, 190 }, { 2, 88, 144 }, + { 1, 60, 101 }, { 1, 36, 60 }, { 1, 16, 28 }, + // Band 3 + { 28, 183, 213 }, { 8, 134, 191 }, { 1, 86, 142 }, + { 1, 56, 96 }, { 1, 30, 53 }, { 1, 12, 20 }, + // Band 4 + { 20, 190, 215 }, { 4, 135, 192 }, { 1, 84, 139 }, + { 1, 53, 91 }, { 1, 28, 49 }, { 1, 11, 20 }, + // Band 5 + { 13, 196, 216 }, { 2, 137, 192 }, { 1, 86, 143 }, + { 1, 57, 99 }, { 1, 32, 56 }, { 1, 13, 24 }, + + // UV plane - Intra + // Band 0 + { 211, 29, 217 }, { 96, 47, 156 }, { 22, 43, 87 }, + // Band 1 + { 78, 120, 193 }, { 111, 116, 186 }, { 46, 102, 164 }, + { 15, 80, 128 }, { 2, 49, 76 }, { 1, 18, 28 }, + // Band 2 + { 71, 161, 203 }, { 42, 132, 192 }, { 10, 98, 150 }, + { 3, 69, 109 }, { 1, 44, 70 }, { 1, 18, 29 }, + // Band 3 + { 57, 186, 211 }, { 30, 140, 196 }, { 4, 93, 146 }, + { 1, 62, 102 }, { 1, 38, 65 }, { 1, 16, 27 }, + // Band 4 + { 47, 199, 217 }, { 14, 145, 196 }, { 1, 88, 142 }, + { 1, 57, 98 }, { 1, 36, 62 }, { 1, 15, 26 }, + // Band 5 + { 26, 219, 229 }, { 5, 155, 207 }, { 1, 94, 151 }, + { 1, 60, 104 }, { 1, 36, 62 }, { 1, 16, 28 }, + + // UV plane - Inter + // Band 0 + { 233, 29, 248 }, { 146, 47, 220 }, { 43, 52, 140 }, + // Band 1 + { 100, 163, 232 }, { 179, 161, 222 }, { 63, 142, 204 }, + { 37, 113, 174 }, { 26, 89, 137 }, { 18, 68, 97 }, + // Band 2 + { 85, 181, 230 }, { 32, 146, 209 }, { 7, 100, 164 }, + { 3, 71, 121 }, { 1, 45, 77 }, { 1, 18, 30 }, + // Band 3 + { 65, 187, 230 }, { 20, 148, 207 }, { 2, 97, 159 }, + { 1, 68, 116 }, { 1, 40, 70 }, { 1, 14, 29 }, + // Band 4 + { 40, 194, 227 }, { 8, 147, 204 }, { 1, 94, 155 }, + { 1, 65, 112 }, { 1, 39, 66 }, { 1, 14, 26 }, + // Band 5 + { 16, 208, 228 }, { 3, 151, 207 }, { 1, 98, 160 }, + { 1, 67, 117 }, { 1, 41, 74 }, { 1, 17, 31 } +}; + +vp9_prob default_coef_probs_32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { + // Y plane - Intra + // Band 0 + { 17, 38, 140 }, { 7, 34, 80 }, { 1, 17, 29 }, + // Band 1 + { 37, 75, 128 }, { 41, 76, 128 }, { 26, 66, 116 }, + { 12, 52, 94 }, { 2, 32, 55 }, { 1, 10, 16 }, + // Band 2 + { 50, 127, 154 }, { 37, 109, 152 }, { 16, 82, 121 }, + { 5, 59, 85 }, { 1, 35, 54 }, { 1, 13, 20 }, + //Band 3 + { 40, 142, 167 }, { 17, 110, 157 }, { 2, 71, 112 }, + { 1, 44, 72 }, { 1, 27, 45 }, { 1, 11, 17 }, + // Band 4 + { 30, 175, 188 }, { 9, 124, 169 }, { 1, 74, 116 }, + { 1, 48, 78 }, { 1, 30, 49 }, { 1, 11, 18 }, + // Band 5 + { 10, 222, 223 }, { 2, 150, 194 }, { 1, 83, 128 }, + { 1, 48, 79 }, { 1, 27, 45 }, { 1, 11, 17 }, + + // Y plane - Inter + // Band 0 + { 36, 41, 235 }, { 29, 36, 193 }, { 10, 27, 111 }, + // Band 1 + { 85, 165, 222 }, { 177, 162, 215 }, { 110, 135, 195 }, + { 57, 113, 168 }, { 23, 83, 120 }, { 10, 49, 61 }, + // Band 2 + { 85, 190, 223 }, { 36, 139, 200 }, { 5, 90, 146 }, + { 1, 60, 103 }, { 1, 38, 65 }, { 1, 18, 30 }, + // Band 3 + { 72, 202, 223 }, { 23, 141, 199 }, { 2, 86, 140 }, + { 1, 56, 97 }, { 1, 36, 61 }, { 1, 16, 27 }, + // Band 4 + { 55, 218, 225 }, { 13, 145, 200 }, { 1, 86, 141 }, + { 1, 57, 99 }, { 1, 35, 61 }, { 1, 13, 22 }, + // Band 5 + { 15, 235, 212 }, { 1, 132, 184 }, { 1, 84, 139 }, + { 1, 57, 97 }, { 1, 34, 56 }, { 1, 14, 23 }, + + // UV plane - Intra + // Band 0 + { 181, 21, 201 }, { 61, 37, 123 }, { 10, 38, 71 }, + // Band 1 + { 47, 106, 172 }, { 95, 104, 173 }, { 42, 93, 159 }, + { 18, 77, 131 }, { 4, 50, 81 }, { 1, 17, 23 }, + // Band 2 + { 62, 147, 199 }, { 44, 130, 189 }, { 28, 102, 154 }, + { 18, 75, 115 }, { 2, 44, 65 }, { 1, 12, 19 }, + // Band 3 + { 55, 153, 210 }, { 24, 130, 194 }, { 3, 93, 146 }, + { 1, 61, 97 }, { 1, 31, 50 }, { 1, 10, 16 }, + // Band 4 + { 49, 186, 223 }, { 17, 148, 204 }, { 1, 96, 142 }, + { 1, 53, 83 }, { 1, 26, 44 }, { 1, 11, 17 }, + // Band 5 + { 13, 217, 212 }, { 2, 136, 180 }, { 1, 78, 124 }, + { 1, 50, 83 }, { 1, 29, 49 }, { 1, 14, 23 }, + + // UV plane - Inter + // Band 0 + { 197, 13, 247 }, { 82, 17, 222 }, { 25, 17, 162 }, + // Band 1 + { 126, 186, 247 }, { 234, 191, 243 }, { 176, 177, 234 }, + { 104, 158, 220 }, { 66, 128, 186 }, { 55, 90, 137 }, + // Band 2 + { 111, 197, 242 }, { 46, 158, 219 }, { 9, 104, 171 }, + { 2, 65, 125 }, { 1, 44, 80 }, { 1, 17, 91 }, + // Band 3 + { 104, 208, 245 }, { 39, 168, 224 }, { 3, 109, 162 }, + { 1, 79, 124 }, { 1, 50, 102 }, { 1, 43, 102 }, + // Band 4 + { 84, 220, 246 }, { 31, 177, 231 }, { 2, 115, 180 }, + { 1, 79, 134 }, { 1, 55, 77 }, { 1, 60, 79 }, + // Band 5 + { 43, 243, 240 }, { 8, 180, 217 }, { 1, 115, 166 }, + { 1, 84, 121 }, { 1, 51, 67 }, { 1, 16, 6 } + +}; + +#define FC_INTRA_OFFSET 0 +#define FC_INTRA_SIZE 1664 + +#define FC_INTER_OFFSET 1664 +#define FC_INTER_SIZE 384 + +#define FC_SKIP_OFFSET 1664 +#define FC_SKIP_SIZE 3 + +void intel_init_default_vp9_probs(FRAME_CONTEXT *frame_context) +{ + if (!frame_context) + return; + + frame_context->tx_probs = default_tx_probs; + //dummy 52 + memcpy(frame_context->coeff_probs4x4, default_coef_probs_4x4, + sizeof(default_coef_probs_4x4)); + memcpy(frame_context->coeff_probs8x8, default_coef_probs_8x8, + sizeof(default_coef_probs_8x8)); + memcpy(frame_context->coeff_probs16x16, default_coef_probs_16x16, + sizeof(default_coef_probs_16x16)); + memcpy(frame_context->coeff_probs32x32, default_coef_probs_32x32, + sizeof(default_coef_probs_16x16)); + //dummy 16 + memcpy(frame_context->skip_probs, default_skip_probs, + sizeof(default_skip_probs)); + memcpy(frame_context->inter_mode_probs, default_inter_mode_probs, + sizeof(default_inter_mode_probs)); + memcpy(frame_context->switchable_interp_prob, + default_switchable_interp_prob, + sizeof(default_switchable_interp_prob)); + memcpy(frame_context->intra_inter_prob, default_intra_inter_p, + sizeof(default_intra_inter_p)); + memcpy(frame_context->comp_inter_prob, default_comp_inter_p, + sizeof(default_comp_inter_p)); + memcpy(frame_context->single_ref_prob, default_single_ref_p, + sizeof(default_single_ref_p)); + memcpy(frame_context->comp_ref_prob, default_comp_ref_p, + sizeof(default_comp_ref_p)); + memcpy(frame_context->y_mode_prob, default_if_y_probs, + sizeof(default_if_y_probs)); + memcpy(frame_context->partition_prob, default_partition_probs, + sizeof(default_partition_probs)); + frame_context->nmvc = default_nmv_context; + //dummy 47 + memcpy(frame_context->uv_mode_prob, default_if_uv_probs, + sizeof(default_if_uv_probs)); + memcpy(frame_context->seg_tree_probs, default_seg_tree_probs, + sizeof(default_seg_tree_probs)); + memcpy(frame_context->seg_pred_probs, default_seg_pred_probs, + sizeof(default_seg_pred_probs)); + return; +} + + +void intel_vp9_copy_frame_context(FRAME_CONTEXT *dst, + FRAME_CONTEXT *src, + bool inter_flag) +{ + unsigned char *fc_dst, *fc_src; + + if (!dst || !src) + return; + + fc_dst = (unsigned char *)dst; + fc_src = (unsigned char *)src; + /* update the prob related with tx_mode/tx_coeff */ + memcpy(fc_dst + FC_INTRA_OFFSET, fc_src + FC_INTRA_OFFSET, FC_INTRA_SIZE); + + if (inter_flag) { + /* update the prob related with inter-frame */ + memcpy(fc_dst + FC_INTER_OFFSET, fc_src + FC_INTER_OFFSET, FC_INTER_SIZE); + } else { + memcpy(fc_dst + FC_SKIP_OFFSET, fc_src + FC_SKIP_OFFSET, FC_SKIP_SIZE); + } +} + +void intel_update_intra_frame_context(FRAME_CONTEXT *frame_context) +{ + if (!frame_context) + return; + + memcpy(frame_context->partition_prob, vp9_kf_partition_probs, + sizeof(vp9_kf_partition_probs)); + + memcpy(frame_context->uv_mode_prob, vp9_kf_uv_mode_prob, + sizeof(vp9_kf_uv_mode_prob)); + +} + +struct vp9_write_bit_buffer { + uint8_t *bit_buffer; + int bit_offset; +}; + +static +void vp9_wb_write_bit(struct vp9_write_bit_buffer *wb, int bit) +{ + const int off = wb->bit_offset; + const int p = off / 8; + const int q = 7 - off % 8; + if (q == 7) { + wb->bit_buffer[p] = bit << q; + } else { + wb->bit_buffer[p] &= ~(1 << q); + wb->bit_buffer[p] |= bit << q; + } + wb->bit_offset = off + 1; +} + +static +void vp9_wb_write_literal(struct vp9_write_bit_buffer *wb, int data, int bits) +{ + int bit; + for (bit = bits - 1; bit >= 0; bit--) + vp9_wb_write_bit(wb, (data >> bit) & 1); +} + +static +void write_bitdepth_colorspace_sampling(int codec_profile, + struct vp9_write_bit_buffer *wb) +{ + int profile = VAProfileVP9Profile0; + profile = profile + 0; + + if (codec_profile >= (VAProfileVP9Profile0 + 2)) { + /* the bit-depth will be added for VP9Profile2/3 */ + /* this will be added later */ + } + + /* Add the default color-space */ + vp9_wb_write_literal(wb, 0, 3); + vp9_wb_write_bit(wb, 0); // 0: [16, 235] (i.e. xvYCC), 1: [0, 255] + + /* the sampling_x/y will be added for VP9Profile1/2/3 later */ +} + +#define MAX_TILE_WIDTH_B64 64 +#define MIN_TILE_WIDTH_B64 4 + +static int get_min_log2_tile_cols(const int sb_cols) { + int min_log2 = 0; + + while ((MAX_TILE_WIDTH_B64 << min_log2) < sb_cols) + ++min_log2; + + return min_log2; +} + +static int get_max_log2_tile_cols(const int sb_cols) { + int max_log2 = 1; + + while ((sb_cols >> max_log2) >= MIN_TILE_WIDTH_B64) + ++max_log2; + + return max_log2 - 1; +} + + +bool intel_write_uncompressed_header(struct encode_state *encode_state, + int codec_profile, + char *header_data, + int *header_length, + vp9_header_bitoffset *header_bitoffset) +{ +#define VP9_SYNC_CODE_0 0x49 +#define VP9_SYNC_CODE_1 0x83 +#define VP9_SYNC_CODE_2 0x42 + +#define VP9_FRAME_MARKER 0x2 + +#define REFS_PER_FRAME 3 + +#define REF_FRAMES_LOG2 3 +#define REF_FRAMES (1 << REF_FRAMES_LOG2) + +#define VP9_KEY_FRAME 0 + + VAEncPictureParameterBufferVP9 *pic_param; + VAEncMiscParameterTypeVP9PerSegmantParam *seg_param = NULL; + struct vp9_write_bit_buffer *wb, vp9_wb; + + if (!encode_state->pic_param_ext || !encode_state->pic_param_ext->buffer) + return false; + + if (!header_data || !header_bitoffset || !header_length) + return false; + + memset(header_bitoffset, 0, sizeof(vp9_header_bitoffset)); + + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; + + if (encode_state->q_matrix) + seg_param = (VAEncMiscParameterTypeVP9PerSegmantParam *) encode_state->q_matrix->buffer; + + vp9_wb.bit_buffer = (uint8_t *)header_data; + vp9_wb.bit_offset = 0; + wb = &vp9_wb; + vp9_wb_write_literal(wb, VP9_FRAME_MARKER, 2); + + if (codec_profile == VAProfileVP9Profile0) { + vp9_wb_write_literal(wb, 0, 2); + } else { + /* Other VP9Profile1/2/3 will be added later */ + } + + vp9_wb_write_bit(wb, 0); // show_existing_frame + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.frame_type); + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.show_frame); + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.error_resilient_mode); + + if (pic_param->pic_flags.bits.frame_type == VP9_KEY_FRAME) { + vp9_wb_write_literal(wb, VP9_SYNC_CODE_0, 8); + vp9_wb_write_literal(wb, VP9_SYNC_CODE_1, 8); + vp9_wb_write_literal(wb, VP9_SYNC_CODE_2, 8); + + write_bitdepth_colorspace_sampling(codec_profile, wb); + + /* write the encoded frame size */ + vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16); + /* write display size */ + if ((pic_param->frame_width_dst != pic_param->frame_width_src) || + (pic_param->frame_height_dst != pic_param->frame_height_src)) { + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16); + } else + vp9_wb_write_bit(wb, 0); + } else { + /* for the non-Key frame */ + if (!pic_param->pic_flags.bits.show_frame) + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.intra_only); + + if (!pic_param->pic_flags.bits.error_resilient_mode) + vp9_wb_write_literal(wb, pic_param->pic_flags.bits.reset_frame_context, 2); + + if (pic_param->pic_flags.bits.intra_only) { + vp9_wb_write_literal(wb, VP9_SYNC_CODE_0, 8); + vp9_wb_write_literal(wb, VP9_SYNC_CODE_1, 8); + vp9_wb_write_literal(wb, VP9_SYNC_CODE_2, 8); + + /* Add the bit_depth for VP9Profile1/2/3 */ + /* write the refreshed_frame_flags */ + vp9_wb_write_literal(wb, pic_param->refresh_frame_flags, REF_FRAMES); + /* write the encoded frame size */ + vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16); + /* write display size */ + if ((pic_param->frame_width_dst != pic_param->frame_width_src) || + (pic_param->frame_height_dst != pic_param->frame_height_src)) { + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16); + } else + vp9_wb_write_bit(wb, 0); + + } else { + /* The refresh_frame_map is for the next frame so that it can select Last/Godlen/Alt ref_index */ + /* + if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0)) + refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx; + if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0)) + refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx; + if ((pic_param->ref_flags.bits.ref_frame_ctrl_l0) & (1 << 0)) + refresh_flags = 1 << pic_param->ref_flags.bits.ref_last_idx; + */ + vp9_wb_write_literal(wb, pic_param->refresh_frame_flags, REF_FRAMES); + + vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_last_idx, REF_FRAMES_LOG2); + vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_last_sign_bias); + vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_gf_idx, REF_FRAMES_LOG2); + vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_gf_sign_bias); + vp9_wb_write_literal(wb, pic_param->ref_flags.bits.ref_arf_idx, REF_FRAMES_LOG2); + vp9_wb_write_bit(wb, pic_param->ref_flags.bits.ref_arf_sign_bias); + + /* write three bits with zero so that it can parse width/height directly */ + vp9_wb_write_literal(wb, 0, 3); + vp9_wb_write_literal(wb, pic_param->frame_width_dst - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_dst - 1, 16); + + /* write display size */ + if ((pic_param->frame_width_dst != pic_param->frame_width_src) || + (pic_param->frame_height_dst != pic_param->frame_height_src)) { + + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, pic_param->frame_width_src - 1, 16); + vp9_wb_write_literal(wb, pic_param->frame_height_src - 1, 16); + } else + vp9_wb_write_bit(wb, 0); + + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.allow_high_precision_mv); + +#define SWITCHABLE_FILTER 4 +#define FILTER_MASK 3 + + if (pic_param->pic_flags.bits.mcomp_filter_type == SWITCHABLE_FILTER) + vp9_wb_write_bit(wb, 1); + else { + const int filter_to_literal[4] = { 1, 0, 2, 3 }; + uint8_t filter_flag = pic_param->pic_flags.bits.mcomp_filter_type; + filter_flag = filter_flag & FILTER_MASK; + vp9_wb_write_bit(wb, 0); + vp9_wb_write_literal(wb, filter_to_literal[filter_flag], 2); + } + } + } + + /* write refresh_frame_context/paralle frame_decoding */ + if (!pic_param->pic_flags.bits.error_resilient_mode) { + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.refresh_frame_context); + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.frame_parallel_decoding_mode); + } + + vp9_wb_write_literal(wb, pic_param->pic_flags.bits.frame_context_idx, 2); + + /* write loop filter */ + header_bitoffset->bit_offset_lf_level = wb->bit_offset; + vp9_wb_write_literal(wb, pic_param->filter_level, 6); + vp9_wb_write_literal(wb, pic_param->sharpness_level, 3); + + { + int i, mode_flag; + + vp9_wb_write_bit(wb, 1); + vp9_wb_write_bit(wb, 1); + header_bitoffset->bit_offset_ref_lf_delta = wb->bit_offset; + for (i = 0; i < 4; i++) { + /* + * This check is skipped to prepare the bit_offset_lf_ref + if (pic_param->ref_lf_delta[i] == 0) { + vp9_wb_write_bit(wb, 0); + continue; + } + */ + + vp9_wb_write_bit(wb, 1); + mode_flag = pic_param->ref_lf_delta[i]; + if (mode_flag >=0) { + vp9_wb_write_literal(wb, mode_flag & (0x3F), 6); + vp9_wb_write_bit(wb, 0); + } else { + mode_flag = -mode_flag; + vp9_wb_write_literal(wb, mode_flag & (0x3F), 6); + vp9_wb_write_bit(wb, 1); + } + } + + header_bitoffset->bit_offset_mode_lf_delta = wb->bit_offset; + for (i = 0; i < 2; i++) { + /* + * This check is skipped to prepare the bit_offset_lf_ref + if (pic_param->mode_lf_delta[i] == 0) { + vp9_wb_write_bit(wb, 0); + continue; + } + */ + vp9_wb_write_bit(wb, 1); + mode_flag = pic_param->mode_lf_delta[i]; + if (mode_flag >=0) { + vp9_wb_write_literal(wb, mode_flag & (0x3F), 6); + vp9_wb_write_bit(wb, 0); + } else { + mode_flag = -mode_flag; + vp9_wb_write_literal(wb, mode_flag & (0x3F), 6); + vp9_wb_write_bit(wb, 1); + } + } + } + + /* write basic quantizer */ + header_bitoffset->bit_offset_qindex = wb->bit_offset; + vp9_wb_write_literal(wb, pic_param->luma_ac_qindex, 8); + if (pic_param->luma_dc_qindex_delta) { + int delta_q = pic_param->luma_dc_qindex_delta; + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, abs(delta_q), 4); + vp9_wb_write_bit(wb, delta_q < 0); + } else + vp9_wb_write_bit(wb, 0); + + if (pic_param->chroma_dc_qindex_delta) { + int delta_q = pic_param->chroma_dc_qindex_delta; + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, abs(delta_q), 4); + vp9_wb_write_bit(wb, delta_q < 0); + } else + vp9_wb_write_bit(wb, 0); + + if (pic_param->chroma_ac_qindex_delta) { + int delta_q = pic_param->chroma_ac_qindex_delta; + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, abs(delta_q), 4); + vp9_wb_write_bit(wb, delta_q < 0); + } else + vp9_wb_write_bit(wb, 0); + + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_enabled); + if (pic_param->pic_flags.bits.segmentation_enabled) { + int i; + +#define VP9_MAX_PROB 255 + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_update_map); + if (pic_param->pic_flags.bits.segmentation_update_map) { + + header_bitoffset->bit_offset_segmentation = wb->bit_offset; + /* write the seg_tree_probs */ + /* segment_tree_probs/segment_pred_probs are not passed. + * So the hard-coded prob is writen + */ + for (i = 0; i < 7; i++) { + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, VP9_MAX_PROB, 8); + } + + vp9_wb_write_bit(wb, pic_param->pic_flags.bits.segmentation_temporal_update); + if (pic_param->pic_flags.bits.segmentation_temporal_update) { + for (i = 0; i < 3; i++) { + vp9_wb_write_bit(wb, 1); + vp9_wb_write_literal(wb, VP9_MAX_PROB, 8); + } + } + } + + /* write the segment_data info */ + if (seg_param == NULL) { + vp9_wb_write_bit(wb, 0); + } else { + VAEncSegParamVP9 *seg_data; + int seg_delta; + + /* update_data */ + vp9_wb_write_bit(wb, 1); + /* abs_delta should be zero */ + vp9_wb_write_bit(wb, 0); + for (i = 0; i < 8; i++) { + seg_data = &seg_param->seg_data[i]; + + /* The segment qindex delta */ + /* This check is skipped */ + /* if (seg_data->segment_qindex_delta != 0) */ + if (1) { + vp9_wb_write_bit(wb, 1); + seg_delta = seg_data->segment_qindex_delta; + vp9_wb_write_literal(wb, abs(seg_delta), 8); + vp9_wb_write_bit(wb, seg_delta < 0); + } else + vp9_wb_write_bit(wb, 0); + + /* The segment lf delta */ + /* if (seg_data->segment_lf_level_delta != 0) */ + if (1) { + vp9_wb_write_bit(wb, 1); + seg_delta = seg_data->segment_lf_level_delta; + vp9_wb_write_literal(wb, abs(seg_delta), 6); + vp9_wb_write_bit(wb, seg_delta < 0); + } else + vp9_wb_write_bit(wb, 0); + + /* segment reference flag */ + vp9_wb_write_bit(wb, seg_data->seg_flags.bits.segment_reference_enabled); + if (seg_data->seg_flags.bits.segment_reference_enabled) + { + vp9_wb_write_literal(wb, seg_data->seg_flags.bits.segment_reference, 2); + } + + /* segment skip flag */ + vp9_wb_write_bit(wb, seg_data->seg_flags.bits.segment_reference_skipped); + } + } + } + + /* write tile info */ + { + int sb_cols = (pic_param->frame_width_dst + 63) / 64; + int min_log2_tile_cols, max_log2_tile_cols; + int col_data; + + /* write tile column info */ + min_log2_tile_cols = get_min_log2_tile_cols(sb_cols); + max_log2_tile_cols = get_max_log2_tile_cols(sb_cols); + + col_data = pic_param->log2_tile_columns - min_log2_tile_cols; + while(col_data--) { + vp9_wb_write_bit(wb, 1); + } + if (pic_param->log2_tile_columns < max_log2_tile_cols) + vp9_wb_write_bit(wb, 0); + + /* write tile row info */ + vp9_wb_write_bit(wb, pic_param->log2_tile_rows); + if (pic_param->log2_tile_rows) + vp9_wb_write_bit(wb, (pic_param->log2_tile_rows != 1)); + } + + /* get the bit_offset of the first partition size */ + header_bitoffset->bit_offset_first_partition_size = wb->bit_offset; + + /* reserve the space for writing the first partitions ize */ + vp9_wb_write_literal(wb, 0, 16); + + *header_length = (wb->bit_offset + 7) / 8; + + return true; +} + +const unsigned short vp9_quant_dc[256] = { + 4, 8, 8, 9, 10, 11, 12, 12, + 13, 14, 15, 16, 17, 18, 19, 19, + 20, 21, 22, 23, 24, 25, 26, 26, + 27, 28, 29, 30, 31, 32, 32, 33, + 34, 35, 36, 37, 38, 38, 39, 40, + 41, 42, 43, 43, 44, 45, 46, 47, + 48, 48, 49, 50, 51, 52, 53, 53, + 54, 55, 56, 57, 57, 58, 59, 60, + 61, 62, 62, 63, 64, 65, 66, 66, + 67, 68, 69, 70, 70, 71, 72, 73, + 74, 74, 75, 76, 77, 78, 78, 79, + 80, 81, 81, 82, 83, 84, 85, 85, + 87, 88, 90, 92, 93, 95, 96, 98, + 99, 101, 102, 104, 105, 107, 108, 110, + 111, 113, 114, 116, 117, 118, 120, 121, + 123, 125, 127, 129, 131, 134, 136, 138, + 140, 142, 144, 146, 148, 150, 152, 154, + 156, 158, 161, 164, 166, 169, 172, 174, + 177, 180, 182, 185, 187, 190, 192, 195, + 199, 202, 205, 208, 211, 214, 217, 220, + 223, 226, 230, 233, 237, 240, 243, 247, + 250, 253, 257, 261, 265, 269, 272, 276, + 280, 284, 288, 292, 296, 300, 304, 309, + 313, 317, 322, 326, 330, 335, 340, 344, + 349, 354, 359, 364, 369, 374, 379, 384, + 389, 395, 400, 406, 411, 417, 423, 429, + 435, 441, 447, 454, 461, 467, 475, 482, + 489, 497, 505, 513, 522, 530, 539, 549, + 559, 569, 579, 590, 602, 614, 626, 640, + 654, 668, 684, 700, 717, 736, 755, 775, + 796, 819, 843, 869, 896, 925, 955, 988, + 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336, +}; + +const unsigned short vp9_quant_ac[256] = { + 4, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, + 104, 106, 108, 110, 112, 114, 116, 118, + 120, 122, 124, 126, 128, 130, 132, 134, + 136, 138, 140, 142, 144, 146, 148, 150, + 152, 155, 158, 161, 164, 167, 170, 173, + 176, 179, 182, 185, 188, 191, 194, 197, + 200, 203, 207, 211, 215, 219, 223, 227, + 231, 235, 239, 243, 247, 251, 255, 260, + 265, 270, 275, 280, 285, 290, 295, 300, + 305, 311, 317, 323, 329, 335, 341, 347, + 353, 359, 366, 373, 380, 387, 394, 401, + 408, 416, 424, 432, 440, 448, 456, 465, + 474, 483, 492, 501, 510, 520, 530, 540, + 550, 560, 571, 582, 593, 604, 615, 627, + 639, 651, 663, 676, 689, 702, 715, 729, + 743, 757, 771, 786, 801, 816, 832, 848, + 864, 881, 898, 915, 933, 951, 969, 988, + 1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151, + 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343, + 1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567, + 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828, +}; diff -Nru intel-vaapi-driver-1.6.2/src/vp9_probs.h intel-vaapi-driver-1.7.1/src/vp9_probs.h --- intel-vaapi-driver-1.6.2/src/vp9_probs.h 2015-12-15 05:55:31.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/vp9_probs.h 2016-06-16 00:57:46.000000000 +0000 @@ -41,6 +41,8 @@ #ifndef VP9_PROBS_H #define VP9_PROBS_H +#include + #define TX_SIZE_CONTEXTS 2 #define TX_SIZES 4 #define PLANE_TYPES 2 @@ -155,486 +157,93 @@ } FRAME_CONTEXT; -static const struct tx_probs default_tx_probs = { - { { 100 }, - { 66 } }, +extern struct tx_probs default_tx_probs; - { { 20, 152 }, - { 15, 101 } }, +extern vp9_prob default_skip_probs[SKIP_CONTEXTS]; - { { 3, 136, 37 }, - { 5, 52, 13 } }, -}; +extern vp9_prob default_inter_mode_probs[INTER_MODE_CONTEXTS] + [INTER_MODES - 1]; -static const vp9_prob default_skip_probs[SKIP_CONTEXTS] = { - 192, 128, 64 -}; +extern vp9_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS] + [SWITCHABLE_FILTERS - 1]; -static const vp9_prob default_inter_mode_probs[INTER_MODE_CONTEXTS] - [INTER_MODES - 1] = { - {2, 173, 34}, // 0 = both zero mv - {7, 145, 85}, // 1 = one zero mv + one a predicted mv - {7, 166, 63}, // 2 = two predicted mvs - {7, 94, 66}, // 3 = one predicted/zero and one new mv - {8, 64, 46}, // 4 = two new mvs - {17, 81, 31}, // 5 = one intra neighbour + x - {25, 29, 30}, // 6 = two intra neighbours -}; +extern vp9_prob default_intra_inter_p[INTRA_INTER_CONTEXTS]; -static const vp9_prob default_switchable_interp_prob[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS - 1] = { - { 235, 162, }, - { 36, 255, }, - { 34, 3, }, - { 149, 144, }, -}; +extern vp9_prob default_comp_inter_p[COMP_INTER_CONTEXTS]; -static const vp9_prob default_intra_inter_p[INTRA_INTER_CONTEXTS] = { - 9, 102, 187, 225 -}; +extern vp9_prob default_single_ref_p[REF_CONTEXTS][2]; -static const vp9_prob default_comp_inter_p[COMP_INTER_CONTEXTS] = { - 239, 183, 119, 96, 41 -}; +extern vp9_prob default_comp_ref_p[REF_CONTEXTS]; -static const vp9_prob default_single_ref_p[REF_CONTEXTS][2] = { - { 33, 16 }, - { 77, 74 }, - { 142, 142 }, - { 172, 170 }, - { 238, 247 } -}; +extern vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1]; -static const vp9_prob default_comp_ref_p[REF_CONTEXTS] = { - 50, 126, 123, 221, 226 -}; +extern vp9_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1]; -const vp9_prob vp9_kf_uv_mode_prob[INTRA_MODES][INTRA_MODES - 1] = { - { 144, 11, 54, 157, 195, 130, 46, 58, 108 }, // y = dc - { 118, 15, 123, 148, 131, 101, 44, 93, 131 }, // y = v - { 113, 12, 23, 188, 226, 142, 26, 32, 125 }, // y = h - { 120, 11, 50, 123, 163, 135, 64, 77, 103 }, // y = d45 - { 113, 9, 36, 155, 111, 157, 32, 44, 161 }, // y = d135 - { 116, 9, 55, 176, 76, 96, 37, 61, 149 }, // y = d117 - { 115, 9, 28, 141, 161, 167, 21, 25, 193 }, // y = d153 - { 120, 12, 32, 145, 195, 142, 32, 38, 86 }, // y = d207 - { 116, 12, 64, 120, 140, 125, 49, 115, 121 }, // y = d63 - { 102, 19, 66, 162, 182, 122, 35, 59, 128 } // y = tm -}; +extern vp9_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1]; -static const vp9_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = { - { 65, 32, 18, 144, 162, 194, 41, 51, 98 }, // block_size < 8x8 - { 132, 68, 18, 165, 217, 196, 45, 40, 78 }, // block_size < 16x16 - { 173, 80, 19, 176, 240, 193, 64, 35, 46 }, // block_size < 32x32 - { 221, 135, 38, 194, 248, 121, 96, 85, 29 } // block_size >= 32x32 -}; +extern vp9_prob default_seg_tree_probs[SEG_TREE_PROBS]; -static const vp9_prob default_if_uv_probs[INTRA_MODES][INTRA_MODES - 1] = { - { 120, 7, 76, 176, 208, 126, 28, 54, 103 }, // y = dc - { 48, 12, 154, 155, 139, 90, 34, 117, 119 }, // y = v - { 67, 6, 25, 204, 243, 158, 13, 21, 96 }, // y = h - { 97, 5, 44, 131, 176, 139, 48, 68, 97 }, // y = d45 - { 83, 5, 42, 156, 111, 152, 26, 49, 152 }, // y = d135 - { 80, 5, 58, 178, 74, 83, 33, 62, 145 }, // y = d117 - { 86, 5, 32, 154, 192, 168, 14, 22, 163 }, // y = d153 - { 85, 5, 32, 156, 216, 148, 19, 29, 73 }, // y = d207 - { 77, 7, 64, 116, 132, 122, 37, 126, 120 }, // y = d63 - { 101, 21, 107, 181, 192, 103, 19, 67, 125 } // y = tm -}; +extern vp9_prob default_seg_pred_probs[PREDICTION_PROBS]; -static const vp9_prob default_seg_tree_probs[SEG_TREE_PROBS] = { - 255, 255, 255, 255, 255, 255, 255 -}; +extern vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS] + [PARTITION_TYPES - 1]; -static const vp9_prob default_seg_pred_probs[PREDICTION_PROBS] = { - 255, 255, 255 -}; +extern vp9_prob default_partition_probs[PARTITION_CONTEXTS] + [PARTITION_TYPES - 1]; -const vp9_prob vp9_kf_partition_probs[PARTITION_CONTEXTS] - [PARTITION_TYPES - 1] = { - // 8x8 -> 4x4 - { 158, 97, 94 }, // a/l both not split - { 93, 24, 99 }, // a split, l not split - { 85, 119, 44 }, // l split, a not split - { 62, 59, 67 }, // a/l both split - // 16x16 -> 8x8 - { 149, 53, 53 }, // a/l both not split - { 94, 20, 48 }, // a split, l not split - { 83, 53, 24 }, // l split, a not split - { 52, 18, 18 }, // a/l both split - // 32x32 -> 16x16 - { 150, 40, 39 }, // a/l both not split - { 78, 12, 26 }, // a split, l not split - { 67, 33, 11 }, // l split, a not split - { 24, 7, 5 }, // a/l both split - // 64x64 -> 32x32 - { 174, 35, 49 }, // a/l both not split - { 68, 11, 27 }, // a split, l not split - { 57, 15, 9 }, // l split, a not split - { 12, 3, 3 }, // a/l both split -}; +extern nmv_context default_nmv_context; -static const vp9_prob default_partition_probs[PARTITION_CONTEXTS] - [PARTITION_TYPES - 1] = { - // 8x8 -> 4x4 - { 199, 122, 141 }, // a/l both not split - { 147, 63, 159 }, // a split, l not split - { 148, 133, 118 }, // l split, a not split - { 121, 104, 114 }, // a/l both split - // 16x16 -> 8x8 - { 174, 73, 87 }, // a/l both not split - { 92, 41, 83 }, // a split, l not split - { 82, 99, 50 }, // l split, a not split - { 53, 39, 39 }, // a/l both split - // 32x32 -> 16x16 - { 177, 58, 59 }, // a/l both not split - { 68, 26, 63 }, // a split, l not split - { 52, 79, 25 }, // l split, a not split - { 17, 14, 12 }, // a/l both split - // 64x64 -> 32x32 - { 222, 34, 30 }, // a/l both not split - { 72, 16, 44 }, // a split, l not split - { 58, 32, 12 }, // l split, a not split - { 10, 7, 6 }, // a/l both split -}; +extern vp9_prob default_coef_probs_4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM]; -//Rearranged the values for better usage -static const nmv_context default_nmv_context = { - {32, 64, 96}, - { - { // Vertical component - 128, // sign - {224, 144, 192, 168, 192, 176, 192, 198, 198, 245}, // class - {216}, // class0 - {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits - }, - { // Horizontal component - 128, // sign - {216, 128, 176, 160, 176, 176, 192, 198, 198, 208}, // class - {208}, // class0 - {136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, // bits - } - }, - {{128, 128, 64}, {96, 112, 64}}, // class0_fp0 - {64, 96, 64}, // fp0 - {{128, 128, 64}, {96, 112, 64}}, // class0_fp1 - {64, 96, 64}, // fp1 - {160, 128}, // class0_hp bit - {160, 128} // hp +extern vp9_prob default_coef_probs_8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM]; -}; +extern vp9_prob default_coef_probs_16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM]; -//Rearranged the coeff probs for better usage -static const vp9_prob default_coef_probs_4x4[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { - // Y plane - Intra - // Band 0 - { 195, 29, 183 }, { 84, 49, 136 }, { 8, 42, 71 }, - // Band 1 - { 31, 107, 169 }, { 35, 99, 159 }, { 17, 82, 140 }, - { 8, 66, 114 }, { 2, 44, 76 }, { 1, 19, 32 }, - // Band 2 - { 40, 132, 201 }, { 29, 114, 187 }, { 13, 91, 157 }, - { 7, 75, 127 }, { 3, 58, 95 }, { 1, 28, 47 }, - // Band 3 - { 69, 142, 221 }, { 42, 122, 201 }, { 15, 91, 159 }, - { 6, 67, 121 }, { 1, 42, 77 }, { 1, 17, 31 }, - // Band 4 - { 102, 148, 228 }, { 67, 117, 204 }, { 17, 82, 154 }, - { 6, 59, 114 }, { 2, 39, 75 }, { 1, 15, 29 }, - // Band 5 - { 156, 57, 233 }, { 119, 57, 212 }, { 58, 48, 163 }, - { 29, 40, 124 }, { 12, 30, 81 }, { 3, 12, 31 }, - - // Y plane - Inter - // Band 0 - { 191, 107, 226 }, { 124, 117, 204 }, { 25, 99, 155 }, - // Band 1 - { 29, 148, 210 }, { 37, 126, 194 }, { 8, 93, 157 }, - { 2, 68, 118 }, { 1, 39, 69 }, { 1, 17, 33 }, - // Band 2 - { 41, 151, 213 }, { 27, 123, 193 }, { 3, 82, 144 }, - { 1, 58, 105 }, { 1, 32, 60 }, { 1, 13, 26 }, - // Band 3 - { 59, 159, 220 }, { 23, 126, 198 }, { 4, 88, 151 }, - { 1, 66, 114 }, { 1, 38, 71 }, { 1, 18, 34 }, - // Band 4 - { 114, 136, 232 }, { 51, 114, 207 }, { 11, 83, 155 }, - { 3, 56, 105 }, { 1, 33, 65 }, { 1, 17, 34 }, - // Band 5 - { 149, 65, 234 }, { 121, 57, 215 }, { 61, 49, 166 }, - { 28, 36, 114 }, { 12, 25, 76 }, { 3, 16, 42 }, - - // UV plane - Intra - // Band 0 - { 214, 49, 220 }, { 132, 63, 188 }, { 42, 65, 137 }, - // Band 1 - { 85, 137, 221 }, { 104, 131, 216 }, { 49, 111, 192 }, - { 21, 87, 155 }, { 2, 49, 87 }, { 1, 16, 28 }, - // Band 2 - { 89, 163, 230 }, { 90, 137, 220 }, { 29, 100, 183 }, - { 10, 70, 135 }, { 2, 42, 81 }, { 1, 17, 33 }, - // Band 3 - { 108, 167, 237 }, { 55, 133, 222 }, { 15, 97, 179 }, - { 4, 72, 135 }, { 1, 45, 85 }, { 1, 19, 38 }, - // Band 4 - { 124, 146, 240 }, { 66, 124, 224 }, { 17, 88, 175 }, - { 4, 58, 122 }, { 1, 36, 75 }, { 1, 18, 37 }, - // Band 5 - { 141, 79, 241 }, { 126, 70, 227 }, { 66, 58, 182 }, - { 30, 44, 136 }, { 12, 34, 96 }, { 2, 20, 47 }, - - // UV plane - Inter - // Band 0 - { 229, 99, 249 }, { 143, 111, 235 }, { 46, 109, 192 }, - // Band 1 - { 82, 158, 236 }, { 94, 146, 224 }, { 25, 117, 191 }, - { 9, 87, 149 }, { 3, 56, 99 }, { 1, 33, 57 }, - // Band 2 - { 83, 167, 237 }, { 68, 145, 222 }, { 10, 103, 177 }, - { 2, 72, 131 }, { 1, 41, 79 }, { 1, 20, 39 }, - // Band 3 - { 99, 167, 239 }, { 47, 141, 224 }, { 10, 104, 178 }, - { 2, 73, 133 }, { 1, 44, 85 }, { 1, 22, 47 }, - // Band 4 - { 127, 145, 243 }, { 71, 129, 228 }, { 17, 93, 177 }, - { 3, 61, 124 }, { 1, 41, 84 }, { 1, 21, 52 }, - // Band 5 - { 157, 78, 244 }, { 140, 72, 231 }, { 69, 58, 184 }, - { 31, 44, 137 }, { 14, 38, 105 }, { 8, 23, 61 } -}; +extern vp9_prob default_coef_probs_32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM]; -static const vp9_prob default_coef_probs_8x8[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { - // Y plane - Intra - // Band 0 - { 125, 34, 187 }, { 52, 41, 133 }, { 6, 31, 56 }, - // Band 1 - { 37, 109, 153 }, { 51, 102, 147 }, { 23, 87, 128 }, - { 8, 67, 101 }, { 1, 41, 63 }, { 1, 19, 29 }, - // Band 2 - { 31, 154, 185 }, { 17, 127, 175 }, { 6, 96, 145 }, - { 2, 73, 114 }, { 1, 51, 82 }, { 1, 28, 45 }, - // Band 3 - { 23, 163, 200 }, { 10, 131, 185 }, { 2, 93, 148 }, - { 1, 67, 111 }, { 1, 41, 69 }, { 1, 14, 24 }, - // Band 4 - { 29, 176, 217 }, { 12, 145, 201 }, { 3, 101, 156 }, - { 1, 69, 111 }, { 1, 39, 63 }, { 1, 14, 23 }, - // Band 5 - { 57, 192, 233 }, { 25, 154, 215 }, { 6, 109, 167 }, - { 3, 78, 118 }, { 1, 48, 69 }, { 1, 21, 29 }, - - // Y plane - Inter - // Band 0 - { 202, 105, 245 }, { 108, 106, 216 }, { 18, 90, 144 }, - // Band 1 - { 33, 172, 219 }, { 64, 149, 206 }, { 14, 117, 177 }, - { 5, 90, 141 }, { 2, 61, 95 }, { 1, 37, 57 }, - // Band 2 - { 33, 179, 220 }, { 11, 140, 198 }, { 1, 89, 148 }, - { 1, 60, 104 }, { 1, 33, 57 }, { 1, 12, 21 }, - // Band 3 - { 30, 181, 221 }, { 8, 141, 198 }, { 1, 87, 145 }, - { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 20 }, - // Band 4 - { 32, 186, 224 }, { 7, 142, 198 }, { 1, 86, 143 }, - { 1, 58, 100 }, { 1, 31, 55 }, { 1, 12, 22 }, - // Band 5 - { 57, 192, 227 }, { 20, 143, 204 }, { 3, 96, 154 }, - { 1, 68, 112 }, { 1, 42, 69 }, { 1, 19, 32 }, - - // UV plane - Intra - // Band 0 - { 212, 35, 215 }, { 113, 47, 169 }, { 29, 48, 105 }, - // Band 1 - { 74, 129, 203 }, { 106, 120, 203 }, { 49, 107, 178 }, - { 19, 84, 144 }, { 4, 50, 84 }, { 1, 15, 25 }, - // Band 2 - { 71, 172, 217 }, { 44, 141, 209 }, { 15, 102, 173 }, - { 6, 76, 133 }, { 2, 51, 89 }, { 1, 24, 42 }, - // Band 3 - { 64, 185, 231 }, { 31, 148, 216 }, { 8, 103, 175 }, - { 3, 74, 131 }, { 1, 46, 81 }, { 1, 18, 30 }, - // Band 4 - { 65, 196, 235 }, { 25, 157, 221 }, { 5, 105, 174 }, - { 1, 67, 120 }, { 1, 38, 69 }, { 1, 15, 30 }, - // Band 5 - { 65, 204, 238 }, { 30, 156, 224 }, { 7, 107, 177 }, - { 2, 70, 124 }, { 1, 42, 73 }, { 1, 18, 34 }, - - // UV Plane - Inter - // Band 0 - { 225, 86, 251 }, { 144, 104, 235 }, { 42, 99, 181 }, - // Band 1 - { 85, 175, 239 }, { 112, 165, 229 }, { 29, 136, 200 }, - { 12, 103, 162 }, { 6, 77, 123 }, { 2, 53, 84 }, - // Band 2 - { 75, 183, 239 }, { 30, 155, 221 }, { 3, 106, 171 }, - { 1, 74, 128 }, { 1, 44, 76 }, { 1, 17, 28 }, - // Band 3 - { 73, 185, 240 }, { 27, 159, 222 }, { 2, 107, 172 }, - { 1, 75, 127 }, { 1, 42, 73 }, { 1, 17, 29 }, - // Band 4 - { 62, 190, 238 }, { 21, 159, 222 }, { 2, 107, 172 }, - { 1, 72, 122 }, { 1, 40, 71 }, { 1, 18, 32 }, - // Band 5 - { 61, 199, 240 }, { 27, 161, 226 }, { 4, 113, 180 }, - { 1, 76, 129 }, { 1, 46, 80 }, { 1, 23, 41 } -}; +extern void intel_init_default_vp9_probs(FRAME_CONTEXT *frame_context); -static const vp9_prob default_coef_probs_16x16[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { - // Y plane - Intra - // Band 0 - { 7, 27, 153 }, { 5, 30, 95 }, { 1, 16, 30 }, - // Band 1 - { 50, 75, 127 }, { 57, 75, 124 }, { 27, 67, 108 }, - { 10, 54, 86 }, { 1, 33, 52 }, { 1, 12, 18 }, - // Band 2 - { 43, 125, 151 }, { 26, 108, 148 }, { 7, 83, 122 }, - { 2, 59, 89 }, { 1, 38, 60 }, { 1, 17, 27 }, - // Band 3 - { 23, 144, 163 }, { 13, 112, 154 }, { 2, 75, 117 }, - { 1, 50, 81 }, { 1, 31, 51 }, { 1, 14, 23 }, - // Band 4 - { 18, 162, 185 }, { 6, 123, 171 }, { 1, 78, 125 }, - { 1, 51, 86 }, { 1, 31, 54 }, { 1, 14, 23 }, - // Band 5 - { 15, 199, 227 }, { 3, 150, 204 }, { 1, 91, 146 }, - { 1, 55, 95 }, { 1, 30, 53 }, { 1, 11, 20 }, - - // Y plane - Inter - // Band 0 - { 19, 55, 240 }, { 19, 59, 196 }, { 3, 52, 105 }, - // Band 1 - { 41, 166, 207 }, { 104, 153, 199 }, { 31, 123, 181 }, - { 14, 101, 152 }, { 5, 72, 106 }, { 1, 36, 52 }, - // Band 2 - { 35, 176, 211 }, { 12, 131, 190 }, { 2, 88, 144 }, - { 1, 60, 101 }, { 1, 36, 60 }, { 1, 16, 28 }, - // Band 3 - { 28, 183, 213 }, { 8, 134, 191 }, { 1, 86, 142 }, - { 1, 56, 96 }, { 1, 30, 53 }, { 1, 12, 20 }, - // Band 4 - { 20, 190, 215 }, { 4, 135, 192 }, { 1, 84, 139 }, - { 1, 53, 91 }, { 1, 28, 49 }, { 1, 11, 20 }, - // Band 5 - { 13, 196, 216 }, { 2, 137, 192 }, { 1, 86, 143 }, - { 1, 57, 99 }, { 1, 32, 56 }, { 1, 13, 24 }, - - // UV plane - Intra - // Band 0 - { 211, 29, 217 }, { 96, 47, 156 }, { 22, 43, 87 }, - // Band 1 - { 78, 120, 193 }, { 111, 116, 186 }, { 46, 102, 164 }, - { 15, 80, 128 }, { 2, 49, 76 }, { 1, 18, 28 }, - // Band 2 - { 71, 161, 203 }, { 42, 132, 192 }, { 10, 98, 150 }, - { 3, 69, 109 }, { 1, 44, 70 }, { 1, 18, 29 }, - // Band 3 - { 57, 186, 211 }, { 30, 140, 196 }, { 4, 93, 146 }, - { 1, 62, 102 }, { 1, 38, 65 }, { 1, 16, 27 }, - // Band 4 - { 47, 199, 217 }, { 14, 145, 196 }, { 1, 88, 142 }, - { 1, 57, 98 }, { 1, 36, 62 }, { 1, 15, 26 }, - // Band 5 - { 26, 219, 229 }, { 5, 155, 207 }, { 1, 94, 151 }, - { 1, 60, 104 }, { 1, 36, 62 }, { 1, 16, 28 }, - - // UV plane - Inter - // Band 0 - { 233, 29, 248 }, { 146, 47, 220 }, { 43, 52, 140 }, - // Band 1 - { 100, 163, 232 }, { 179, 161, 222 }, { 63, 142, 204 }, - { 37, 113, 174 }, { 26, 89, 137 }, { 18, 68, 97 }, - // Band 2 - { 85, 181, 230 }, { 32, 146, 209 }, { 7, 100, 164 }, - { 3, 71, 121 }, { 1, 45, 77 }, { 1, 18, 30 }, - // Band 3 - { 65, 187, 230 }, { 20, 148, 207 }, { 2, 97, 159 }, - { 1, 68, 116 }, { 1, 40, 70 }, { 1, 14, 29 }, - // Band 4 - { 40, 194, 227 }, { 8, 147, 204 }, { 1, 94, 155 }, - { 1, 65, 112 }, { 1, 39, 66 }, { 1, 14, 26 }, - // Band 5 - { 16, 208, 228 }, { 3, 151, 207 }, { 1, 98, 160 }, - { 1, 67, 117 }, { 1, 41, 74 }, { 1, 17, 31 } -}; +extern void intel_vp9_copy_frame_context(FRAME_CONTEXT *dst, + FRAME_CONTEXT *src, + bool inter_flag); -static const vp9_prob default_coef_probs_32x32[COEFF_PROB_SIZE][COEFF_PROB_NUM] = { - // Y plane - Intra - // Band 0 - { 17, 38, 140 }, { 7, 34, 80 }, { 1, 17, 29 }, - // Band 1 - { 37, 75, 128 }, { 41, 76, 128 }, { 26, 66, 116 }, - { 12, 52, 94 }, { 2, 32, 55 }, { 1, 10, 16 }, - // Band 2 - { 50, 127, 154 }, { 37, 109, 152 }, { 16, 82, 121 }, - { 5, 59, 85 }, { 1, 35, 54 }, { 1, 13, 20 }, - //Band 3 - { 40, 142, 167 }, { 17, 110, 157 }, { 2, 71, 112 }, - { 1, 44, 72 }, { 1, 27, 45 }, { 1, 11, 17 }, - // Band 4 - { 30, 175, 188 }, { 9, 124, 169 }, { 1, 74, 116 }, - { 1, 48, 78 }, { 1, 30, 49 }, { 1, 11, 18 }, - // Band 5 - { 10, 222, 223 }, { 2, 150, 194 }, { 1, 83, 128 }, - { 1, 48, 79 }, { 1, 27, 45 }, { 1, 11, 17 }, - - // Y plane - Inter - // Band 0 - { 36, 41, 235 }, { 29, 36, 193 }, { 10, 27, 111 }, - // Band 1 - { 85, 165, 222 }, { 177, 162, 215 }, { 110, 135, 195 }, - { 57, 113, 168 }, { 23, 83, 120 }, { 10, 49, 61 }, - // Band 2 - { 85, 190, 223 }, { 36, 139, 200 }, { 5, 90, 146 }, - { 1, 60, 103 }, { 1, 38, 65 }, { 1, 18, 30 }, - // Band 3 - { 72, 202, 223 }, { 23, 141, 199 }, { 2, 86, 140 }, - { 1, 56, 97 }, { 1, 36, 61 }, { 1, 16, 27 }, - // Band 4 - { 55, 218, 225 }, { 13, 145, 200 }, { 1, 86, 141 }, - { 1, 57, 99 }, { 1, 35, 61 }, { 1, 13, 22 }, - // Band 5 - { 15, 235, 212 }, { 1, 132, 184 }, { 1, 84, 139 }, - { 1, 57, 97 }, { 1, 34, 56 }, { 1, 14, 23 }, - - // UV plane - Intra - // Band 0 - { 181, 21, 201 }, { 61, 37, 123 }, { 10, 38, 71 }, - // Band 1 - { 47, 106, 172 }, { 95, 104, 173 }, { 42, 93, 159 }, - { 18, 77, 131 }, { 4, 50, 81 }, { 1, 17, 23 }, - // Band 2 - { 62, 147, 199 }, { 44, 130, 189 }, { 28, 102, 154 }, - { 18, 75, 115 }, { 2, 44, 65 }, { 1, 12, 19 }, - // Band 3 - { 55, 153, 210 }, { 24, 130, 194 }, { 3, 93, 146 }, - { 1, 61, 97 }, { 1, 31, 50 }, { 1, 10, 16 }, - // Band 4 - { 49, 186, 223 }, { 17, 148, 204 }, { 1, 96, 142 }, - { 1, 53, 83 }, { 1, 26, 44 }, { 1, 11, 17 }, - // Band 5 - { 13, 217, 212 }, { 2, 136, 180 }, { 1, 78, 124 }, - { 1, 50, 83 }, { 1, 29, 49 }, { 1, 14, 23 }, - - // UV plane - Inter - // Band 0 - { 197, 13, 247 }, { 82, 17, 222 }, { 25, 17, 162 }, - // Band 1 - { 126, 186, 247 }, { 234, 191, 243 }, { 176, 177, 234 }, - { 104, 158, 220 }, { 66, 128, 186 }, { 55, 90, 137 }, - // Band 2 - { 111, 197, 242 }, { 46, 158, 219 }, { 9, 104, 171 }, - { 2, 65, 125 }, { 1, 44, 80 }, { 1, 17, 91 }, - // Band 3 - { 104, 208, 245 }, { 39, 168, 224 }, { 3, 109, 162 }, - { 1, 79, 124 }, { 1, 50, 102 }, { 1, 43, 102 }, - // Band 4 - { 84, 220, 246 }, { 31, 177, 231 }, { 2, 115, 180 }, - { 1, 79, 134 }, { 1, 55, 77 }, { 1, 60, 79 }, - // Band 5 - { 43, 243, 240 }, { 8, 180, 217 }, { 1, 115, 166 }, - { 1, 84, 121 }, { 1, 51, 67 }, { 1, 16, 6 } +extern void intel_update_intra_frame_context(FRAME_CONTEXT *frame_context); -}; + +typedef struct _vp9_header_bitoffset_ { + unsigned int bit_offset_ref_lf_delta; + unsigned int bit_offset_mode_lf_delta; + unsigned int bit_offset_lf_level; + unsigned int bit_offset_qindex; + unsigned int bit_offset_first_partition_size; + unsigned int bit_offset_segmentation; + unsigned int bit_size_segmentation; +} vp9_header_bitoffset; + +struct encode_state; +extern bool intel_write_uncompressed_header(struct encode_state *encode_state, + int codec_profile, + char *header_data, + int *header_length, + vp9_header_bitoffset *header_bitoffset); + +typedef enum { + ONLY_4X4 = 0, // only 4x4 transform used + ALLOW_8X8 = 1, // allow block transform size up to 8x8 + ALLOW_16X16 = 2, // allow block transform size up to 16x16 + ALLOW_32X32 = 3, // allow block transform size up to 32x32 + TX_MODE_SELECT = 4, // transform specified for each block + TX_MODES = 5, +} TX_MODE; + +typedef enum { + SINGLE_REFERENCE = 0, + COMPOUND_REFERENCE = 1, + REFERENCE_MODE_SELECT = 2, + REFERENCE_MODES = 3, +} REFERENCE_MODE; + +extern const unsigned short vp9_quant_dc[256]; +extern const unsigned short vp9_quant_ac[256]; #endif /*VP9_PROBS_H */ diff -Nru intel-vaapi-driver-1.6.2/src/wayland/Makefile.am intel-vaapi-driver-1.7.1/src/wayland/Makefile.am --- intel-vaapi-driver-1.6.2/src/wayland/Makefile.am 2015-02-05 16:39:13.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/wayland/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -# Copyright (C) 2012 Intel Corporation. All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -EXTRA_DIST = \ - wayland-drm.xml \ - $(NULL) - -# Extra clean files so that maintainer-clean removes *everything* -MAINTAINERCLEANFILES = Makefile.in diff -Nru intel-vaapi-driver-1.6.2/src/wayland/Makefile.in intel-vaapi-driver-1.7.1/src/wayland/Makefile.in --- intel-vaapi-driver-1.6.2/src/wayland/Makefile.in 2015-12-15 06:00:49.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/wayland/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,478 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Copyright (C) 2012 Intel Corporation. All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR -# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/wayland -DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/src/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DRM_CFLAGS = @DRM_CFLAGS@ -DRM_LIBS = @DRM_LIBS@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGL_CFLAGS = @EGL_CFLAGS@ -EGL_LIBS = @EGL_LIBS@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEN4ASM = @GEN4ASM@ -GEN4ASM_CFLAGS = @GEN4ASM_CFLAGS@ -GEN4ASM_LIBS = @GEN4ASM_LIBS@ -GIT = @GIT@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTEL_DRIVER_LT_LDFLAGS = @INTEL_DRIVER_LT_LDFLAGS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBDRM_VERSION = @LIBDRM_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBVA_DEPS_CFLAGS = @LIBVA_DEPS_CFLAGS@ -LIBVA_DEPS_LIBS = @LIBVA_DEPS_LIBS@ -LIBVA_DRIVERS_PATH = @LIBVA_DRIVERS_PATH@ -LIBVA_DRM_DEPS_CFLAGS = @LIBVA_DRM_DEPS_CFLAGS@ -LIBVA_DRM_DEPS_LIBS = @LIBVA_DRM_DEPS_LIBS@ -LIBVA_PACKAGE_VERSION = @LIBVA_PACKAGE_VERSION@ -LIBVA_WAYLAND_DEPS_CFLAGS = @LIBVA_WAYLAND_DEPS_CFLAGS@ -LIBVA_WAYLAND_DEPS_LIBS = @LIBVA_WAYLAND_DEPS_LIBS@ -LIBVA_X11_DEPS_CFLAGS = @LIBVA_X11_DEPS_CFLAGS@ -LIBVA_X11_DEPS_LIBS = @LIBVA_X11_DEPS_LIBS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON2 = @PYTHON2@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ -WAYLAND_LIBS = @WAYLAND_LIBS@ -WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ -WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -wayland_protocoldir = @wayland_protocoldir@ -wayland_scanner = @wayland_scanner@ -EXTRA_DIST = \ - wayland-drm.xml \ - $(NULL) - - -# Extra clean files so that maintainer-clean removes *everything* -MAINTAINERCLEANFILES = Makefile.in -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/wayland/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/wayland/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - cscopelist-am ctags-am distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru intel-vaapi-driver-1.6.2/src/wayland/wayland-drm.xml intel-vaapi-driver-1.7.1/src/wayland/wayland-drm.xml --- intel-vaapi-driver-1.6.2/src/wayland/wayland-drm.xml 2015-02-05 16:39:13.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/wayland/wayland-drm.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,155 +0,0 @@ - - - - - Copyright © 2008-2011 Kristian Høgsberg - Copyright © 2010-2011 Intel Corporation - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that\n the above copyright notice appear in - all copies and that both that copyright notice and this permission - notice appear in supporting documentation, and that the name of - the copyright holders not be used in advertising or publicity - pertaining to distribution of the software without specific, - written prior permission. The copyright holders make no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied - warranty. - - THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - THIS SOFTWARE. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru intel-vaapi-driver-1.6.2/src/wayland-drm.xml intel-vaapi-driver-1.7.1/src/wayland-drm.xml --- intel-vaapi-driver-1.6.2/src/wayland-drm.xml 1970-01-01 00:00:00.000000000 +0000 +++ intel-vaapi-driver-1.7.1/src/wayland-drm.xml 2016-06-17 01:06:24.000000000 +0000 @@ -0,0 +1,155 @@ + + + + + Copyright © 2008-2011 Kristian Høgsberg + Copyright © 2010-2011 Intel Corporation + + Permission to use, copy, modify, distribute, and sell this + software and its documentation for any purpose is hereby granted + without fee, provided that\n the above copyright notice appear in + all copies and that both that copyright notice and this permission + notice appear in supporting documentation, and that the name of + the copyright holders not be used in advertising or publicity + pertaining to distribution of the software without specific, + written prior permission. The copyright holders make no + representations about the suitability of this software for any + purpose. It is provided "as is" without express or implied + warranty. + + THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + THIS SOFTWARE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +