From 484a468f1a3ab731036730634390ec3c93f99a0b Mon Sep 17 00:00:00 2001 From: sanctum32 Date: Fri, 20 Dec 2013 04:47:44 +0200 Subject: [PATCH] Removed third party tools, they all are placed in http://github.com/mangosthree/tools --- contrib/MergeHelper.sh | 243 ---- contrib/backporting/mangos-backport.sh | 333 ----- contrib/backporting/update-commit-log.sh | 38 - contrib/cleanupTools/.gitignore | 1 - contrib/cleanupTools/cleanupHistory.sh | 133 -- contrib/cleanupTools/cleanupStyle.sh | 203 --- contrib/cleanupTools/cleanupToolConfig.sh | 68 - contrib/dbcEditer/BcdEditer.ini | 34 - contrib/dbcEditer/SearchFrm.cpp | 26 - contrib/dbcEditer/SearchFrm.ddp | Bin 51 -> 0 bytes contrib/dbcEditer/SearchFrm.dfm | 63 - contrib/dbcEditer/SearchFrm.h | 29 - contrib/dbcEditer/TitleFrm.cpp | 26 - contrib/dbcEditer/TitleFrm.ddp | Bin 51 -> 0 bytes contrib/dbcEditer/TitleFrm.dfm | 51 - contrib/dbcEditer/TitleFrm.h | 27 - contrib/dbcEditer/dbcedit.cpp | 826 ----------- contrib/dbcEditer/dbcedit.ddp | Bin 51 -> 0 bytes contrib/dbcEditer/dbcedit.dfm | 1259 ----------------- contrib/dbcEditer/dbcedit.h | 105 -- contrib/dbcEditer/pjDbcEditer.bpr | 124 -- contrib/dbcEditer/pjDbcEditer.cpp | 37 - contrib/dbcEditer/pjDbcEditer.exe | Bin 94720 -> 0 bytes contrib/dbcEditer/pjDbcEditer.res | Bin 876 -> 0 bytes contrib/dbcEditer/pjDbcEditer.tds | Bin 2293760 -> 0 bytes contrib/dbcEditer/thOpenSource.cpp | 188 --- contrib/dbcEditer/thOpenSource.h | 24 - contrib/dbcformat/DBC Store.exe | Bin 49152 -> 0 bytes contrib/dbcformat/dbc.desc | 241 ---- contrib/mysql_to_pgsql/CMakeLists.txt | 36 - contrib/mysql_to_pgsql/README | 13 - contrib/mysql_to_pgsql/cmake/FindMySQL.cmake | 68 - .../mysql_to_pgsql/cmake/FindPostgreSQL.cmake | 67 - contrib/mysql_to_pgsql/src/defines.h | 183 --- contrib/mysql_to_pgsql/src/main.cpp | 338 ----- 35 files changed, 4784 deletions(-) delete mode 100644 contrib/MergeHelper.sh delete mode 100644 contrib/backporting/mangos-backport.sh delete mode 100644 contrib/backporting/update-commit-log.sh delete mode 100644 contrib/cleanupTools/.gitignore delete mode 100644 contrib/cleanupTools/cleanupHistory.sh delete mode 100644 contrib/cleanupTools/cleanupStyle.sh delete mode 100644 contrib/cleanupTools/cleanupToolConfig.sh delete mode 100644 contrib/dbcEditer/BcdEditer.ini delete mode 100644 contrib/dbcEditer/SearchFrm.cpp delete mode 100644 contrib/dbcEditer/SearchFrm.ddp delete mode 100644 contrib/dbcEditer/SearchFrm.dfm delete mode 100644 contrib/dbcEditer/SearchFrm.h delete mode 100644 contrib/dbcEditer/TitleFrm.cpp delete mode 100644 contrib/dbcEditer/TitleFrm.ddp delete mode 100644 contrib/dbcEditer/TitleFrm.dfm delete mode 100644 contrib/dbcEditer/TitleFrm.h delete mode 100644 contrib/dbcEditer/dbcedit.cpp delete mode 100644 contrib/dbcEditer/dbcedit.ddp delete mode 100644 contrib/dbcEditer/dbcedit.dfm delete mode 100644 contrib/dbcEditer/dbcedit.h delete mode 100644 contrib/dbcEditer/pjDbcEditer.bpr delete mode 100644 contrib/dbcEditer/pjDbcEditer.cpp delete mode 100644 contrib/dbcEditer/pjDbcEditer.exe delete mode 100644 contrib/dbcEditer/pjDbcEditer.res delete mode 100644 contrib/dbcEditer/pjDbcEditer.tds delete mode 100644 contrib/dbcEditer/thOpenSource.cpp delete mode 100644 contrib/dbcEditer/thOpenSource.h delete mode 100755 contrib/dbcformat/DBC Store.exe delete mode 100644 contrib/dbcformat/dbc.desc delete mode 100644 contrib/mysql_to_pgsql/CMakeLists.txt delete mode 100644 contrib/mysql_to_pgsql/README delete mode 100644 contrib/mysql_to_pgsql/cmake/FindMySQL.cmake delete mode 100644 contrib/mysql_to_pgsql/cmake/FindPostgreSQL.cmake delete mode 100644 contrib/mysql_to_pgsql/src/defines.h delete mode 100644 contrib/mysql_to_pgsql/src/main.cpp diff --git a/contrib/MergeHelper.sh b/contrib/MergeHelper.sh deleted file mode 100644 index db47ea536..000000000 --- a/contrib/MergeHelper.sh +++ /dev/null @@ -1,243 +0,0 @@ -#!/bin/sh -# This code is part of MaNGOS. Contributor & Copyright details are in AUTHORS/THANKS. -# This program is free software licensed under GPL version 2 -# Please see the included COPYING for full text */ - -############################################################################### -# -# Simple helper script to help merging branches & pull requests -# -############################################################################### - -#internal use -script_file_name="MergeHelper.sh" -config_file_name="_MergeHelper.config" - -base_dir=${0%[/\\]*} -config_file=$base_dir/$config_file_name - -DEBUG=0 - -no_ff_merge="--no-ff" - -# ############################################################################# -# Helper functions - -# ############################################################################# -# Re(create) the config file -function create_config { -cat > $config_file << EOF -############################################################################### -# This is the config file for the '$script_file_name' script -# -# The format to automatically merge (and fetch) remote branches is -# repo/branch -# repo2/branch2 -# -# The format to automatically merge local branches is -# branch1 -# branch2 -# -# The format to automatically merge (and fetch) pull requests is -# remote#PullRequestNumber1 -# remote#PullRequestNumber2 -# -############################################################################### - -# Which remote branches should be fetched and merged? -# Format to automatically fetch from a repo and merge the branch: -# Example: -#origin/master - - -# Which local branches should be merged? -# Format to automatically merge a local branch: -#some_cool_feature - - -# Which pull requests shall be merged from a repo? -# Format to automatically fetch and merge a pull request: -# Example: -#origin#17 - -# Enjoy using the tool -EOF -} - -# ############################################################################# -# Display help -function display_help { - echo - echo "Welcome to the MaNGOS merge helper $script_file_name" - echo - echo "Run this tool from a bash compatible terminal (on windows like Git Bash)" - echo - echo "To configure edit the file \"$config_file\"" - echo - echo "Supported options are" - echo " -h -- displays the help you currently see" - echo " -c -- specify config file (Default: $base_dir/$config_file_name )" - echo " -r -- change the remote from which you want to merge a pull-request" - echo " -l -- list available pull-requests from the remote (by default from origin)" - echo " -f -- do fast forward merges if possible (default: do not use fast-forward merges)" - echo - echo "Supported parameters are" - echo " XX -- Number which pull-reqest to merge" - echo " (Default PR pulled from origin, the remote can be changed with -r option" - echo -} - -# ############################################################################# -# Function to fetch and merge a pull reqest -# Call with param1 == remote, param2 == Number -function merge_pull_request { - echo "Now fetching and merging pull-request $2 (from remote $1)" - git fetch $1 +refs/pull/$2/head:refs/remotes/$1/pr/$2 - [[ $? != 0 ]] && exit 1 - git merge $no_ff_merge $1/pr/$2 - [[ $? != 0 ]] && exit 1 -} - -# ############################################################################# -# Main Method -# ############################################################################# - -# Must have Git available -git rev-parse --git-dir 1>/dev/null 2>&1 -if [[ $? -ne 0 ]]; then - echo "ERROR: This script must be used within a Git working tree" - echo "Try to start from your main mangos directory by using" - echo " \"contrib/$script_file_name\"" - read -p"Press [RETURN] to exit" - exit 1 -fi - -# Config options -pull_remote="origin" -do_help=0 -do_list=0 -while getopts ":hc:r:lf" opt; do - case $opt in - h) - do_help=1 - ;; - c) - config_file=$OPTARG - echo "Using configuration file $config_file" - ;; - r) - pull_remote=$OPTARG - echo "Using remote $pull_remote for parameter pull-request merge" - ;; - l) - do_list=1 - ;; - f) - no_ff_merge="" - ;; - \?) - echo "Invalid option: -$OPTARG" - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." - exit 1 - ;; - esac -done -shift $((OPTIND-1)) - -# Display help and exit -if [ $do_help -eq 1 ]; then - display_help - if [ ! -f $config_file ]; then - create_config - fi - exit 0 -fi - -# List remotes and exit -if [ $do_list -eq 1 ]; then - echo "Available Pull-Requests on remote $pull_remote:" - git ls-remote $pull_remote pull/*/head | sed 's;.*refs/pull/\([0-9]*\)/head; \1;g' - exit 0 -fi - -# Called with Pull Request for direct merge -if [ "$1" != "" ]; then - # Alternate call with pull-request number - merge_pull_request $pull_remote $1 - exit 0 -fi - -# Check if config file present -if [ ! -f $config_file ] -then - create_config - display_help - read -p"Press [RETURN] to exit" - exit 1 -fi - -already_fetched_remotes="" -# The config file exists, read it line by line and use its content -while read cline -do - if [ $DEBUG -eq 1 ]; then echo "DEBUG - Processing line $cline"; fi - # Non-empty and non-comment line (comments start with #) - if [[ "$cline" != "" && "$cline" != \#* ]]; then - if echo $cline | egrep -s "^([[:alnum:]_-]+)#([[:digit:]]+)$" ; then - # Pull-Request found - Format is - remote=`echo $cline | sed -r 's@([[:alnum:]_-]+)#([[:digit:]]+)@\1@'` - PR=`echo $cline | sed -r 's@([[:alnum:]_-]+)#([[:digit:]]+)@\2@'` - - if [ $DEBUG -eq 1 ]; then echo "DEBUG - pull request line found (remote $remote PR $PR)"; fi - - merge_pull_request $remote $PR - - elif echo $cline | egrep -s "^([[:alnum:]_-]+)/([[:alnum:]_-]+)$" ; then - # remote branch found - Format is - remote=`echo $cline | sed -r 's@([[:alnum:]_-]+)/([[:alnum:]_-]+)@\1@'` - branch=`echo $cline | sed -r 's@([[:alnum:]_-]+)/([[:alnum:]_-]+)@\2@'` - - if [ $DEBUG -eq 1 ]; then echo "DEBUG - remote branch line found (remote $remote branch $branch)"; fi - - found_remote=0 - for f in $already_fetched_remotes; do - if [ "$f" = "$remote" ]; then - found_remote=1 - fi - done - - if [ $found_remote -eq 0 ]; then - already_fetched_remotes="$already_fetched_remotes $remote" - echo "Fetching $remote" - git fetch $remote - [[ $? != 0 ]] && exit 1 - fi - - echo "Merging $branch from $remote" - git merge $no_ff_merge $remote/$branch - [[ $? != 0 ]] && exit 1 - - elif echo $cline | egrep -s "^([[:alnum:]_-]+)$" ; then - # local branch found - Format is - branch=`echo $cline | sed -r 's@([[:alnum:]_-]+)@\1@'` - - if [ $DEBUG -eq 1 ]; then echo "DEBUG - local branch line found (branch $branch)"; fi - - git merge $no_ff_merge $branch - [[ $? != 0 ]] && exit 1 - - else - echo "Unsupported config line found: $cline" - echo "Aborting..." - exit 1 - fi - fi -done < $config_file - -echo -echo "All done." -echo -exit 0 diff --git a/contrib/backporting/mangos-backport.sh b/contrib/backporting/mangos-backport.sh deleted file mode 100644 index 6c2bb1854..000000000 --- a/contrib/backporting/mangos-backport.sh +++ /dev/null @@ -1,333 +0,0 @@ -#!/bin/bash -# -# mangos-backport - a bash helper for backporting in git for MaNGOS project -# Copyright (C) 2009 freghar -# -# 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA -# - -# The script works pretty simple - each time an empty commit is made, -# copying author and message from the original one. -# Then the original commit is cherry-picked -n (no commit) -# and the changes are git commit --amended to the prepared empty commit. - -### general definitions - -## internals -BATCH_PROCESS=0 -VERBOSE=0 - -## user-tunable -AUTORESOLVE="src/shared/revision_nr.h" -GIT_AMEND_OPTS="-s" -GIT_RECOVER="git reset --hard HEAD^" -CONFLICT_RETVAL=2 # for batch usage -GIT_PATH="./" - - -### print error to stderr -function print_error { - echo -e "${@}" 1>&2 -} - -### prints help -function print_help { - echo -e "Usage: ${0##*/} [-vb] " \ - "\nBackports a specified commit to current branch." \ - "\n\n -b Batch processing (no interaction)." \ - "\n (runs amend without calling \$EDITOR)" \ - "\n -v Be verbose." \ - "\n -n Never automatically commit." \ - "\n" -} - -### verbose print -function verbose_print { - [[ ${VERBOSE} > 0 ]] && echo "${@}" -} - -### runs a command and handles it's output verbosity -#function verbose_run { -# if [[ ${VERBOSE} > 0 ]]; then -# "${@}" -# return $? -# else -# "${@}" 1 > /dev/null -# return $? -# fi -#} - -### catches output of a command and returns it's retval -#function catch_out { -# pick_out=$(${@} 2>&1) -# return $? -#} - -### recover from an error, deleting empty commit -function git_recover { - print_error "----------" - print_error "Caught an error, checking for last commit ..." - - # check if the last commit is empty, - # ie. it has the same tree object dependency as it's parent - local head_tree=$(git log -1 --pretty="%T" HEAD) - local prev_tree=$(git log -1 --pretty="%T" HEAD^) - if [[ $head_tree == $prev_tree ]]; then - print_error "Last commit empty, running ${GIT_RECOVER}" \ - "\nto previous HEAD (should be ${CURRENT_HEAD})." - print_error "----------" - ${GIT_RECOVER} - else - print_error "Last commit isn't empty (or git log failed) -" \ - "something strange happened,\ncheck git log" \ - "and do the cleanup (if needed) by hand." - fi - exit 1 -} - -### amend the empty commit, assigning new tree -function git_autoamend { - - # if the index is empty, there's nothing to amend - if [[ -z $(git diff-index --cached HEAD) ]]; then - git_retval=$? - [[ $git_retval != 0 ]] && git_recover - - print_error "The index is empty, nothing to amend. This should" \ - "not happen during normal\nworkflow, so you" \ - "probably did something crazy like picking\na" \ - "commit to a branch where it already exists." - git_recover - fi - - verbose_print "----------" - if [[ ${BATCH_PROCESS} > 0 ]]; then - if [[ ${VERBOSE} > 0 ]]; then - git commit ${GIT_AMEND_OPTS} --amend -C HEAD - git_retval=$? - else - git commit ${GIT_AMEND_OPTS} --amend -C HEAD 1> /dev/null - git_retval=$? - [[ $git_retval == 0 ]] && echo \ - "Commit ${COMMIT_HASH} picked." - fi - else - git commit ${GIT_AMEND_OPTS} --amend -c HEAD - git_retval=$? - fi - [[ $git_retval != 0 ]] && git_recover -} - - -### main() - -## arguments - -# arg parsing -while getopts "vbn" OPTION; do - case $OPTION in - v) - VERBOSE=1 - ;; - b) - BATCH_PROCESS=1 - ;; - n) - NO_AUTOCOMMIT=1 - ;; - \?) - print_help - exit 1 - ;; - esac -done; -shift $(( $OPTIND - 1 )) -ORIG_REF=${1} - -# check for needed arguments -if [[ -z ${ORIG_REF} ]]; then - print_help - exit 1 -fi - -## startup checks - -# check for needed commands -for cmd in git grep sed wc; do - if [[ -z $(which ${cmd}) ]]; then - print_error "error: ${cmd}: command not found" - exit 1 - fi -done; - -# are we in git root dir? -if [[ ! -d .git/ ]]; then - print_error "error: not in repository root directory" - exit 1 -fi - -# is the index clean? -if [[ ! -z $(git diff-index HEAD) ]]; then - print_error "error: dirty index, run mixed/hard reset first" - exit 1 -fi - -## original commit infos - -# current HEAD commit hash -CURRENT_HEAD=$(git show -s --pretty=format:'%h' HEAD) -[[ $? != 0 ]] && exit 1 - -# author with email -COMMIT_AUTHOR=$(git show -s --pretty=format:'%an <%ae>' ${ORIG_REF}) -[[ $? != 0 ]] && exit 1 - -# commit object hash (abbrev) -COMMIT_HASH=$(git show -s --pretty=format:'%h' ${ORIG_REF}) -[[ $? != 0 ]] && exit 1 - -# subject (with removed revision number) -COMMIT_SUBJECT=$(git show -s --pretty=format:'%s' ${ORIG_REF} | sed -r 's/\[[a-z]?[0-9]*\] //') -[[ $? != 0 ]] && exit 1 -COMMIT_REVISION=$(git show -s --pretty=format:'%s' ${ORIG_REF} | sed -nr 's/^\[([a-z]?[0-9]*).*/\1/p') -[[ $? != 0 ]] && exit 1 -if [ "$COMMIT_REVISION" != "" ]; then COMMIT_REVISION="[$COMMIT_REVISION] - "; fi - -# body -COMMIT_BODY=$(git show -s --pretty=format:'%b' ${ORIG_REF}) -[[ $? != 0 ]] && exit 1 - -# whole message (yea, it could be done without echo) -COMMIT_MESSAGE=$(echo -e "${COMMIT_SUBJECT}\n\n${COMMIT_BODY}\n\n(based on commit $COMMIT_REVISION${COMMIT_HASH})") -[[ $? != 0 ]] && exit 1 - -## new empty commit ready, so create it -verbose_print "Creating new empty commit on current HEAD (${CURRENT_HEAD}}." -verbose_print "----------" -if [[ ${VERBOSE} > 0 ]]; then - git commit --author="${COMMIT_AUTHOR}" -m "${COMMIT_MESSAGE}" \ - --allow-empty - [[ $? != 0 ]] && exit 1 -else - git commit --author="${COMMIT_AUTHOR}" -m "${COMMIT_MESSAGE}" \ - --allow-empty 1> /dev/null - [[ $? != 0 ]] && exit 1 -fi - - -## first, try cherry-picking the commit and catch conflicts. -## - if there are none, simply amend and exit -## - if there are none related to $AUTORESOLVE, only prepare -## the backported commit -## - when multiple conflicts occur, including $AUTORESOLVE, -## do the resolution for the one file, prepare the commit -## and let user resolve the rest (+ amend) -## - when only single ($AUTORESOLVE) conflict occur, resolve it -## and fire up $EDITOR to autocommit - -pick_out=$(git cherry-pick -n ${ORIG_REF} 2>&1) -pick_retval=$? - -# exit if there was a fatal app error -if [[ $pick_retval > 1 ]]; then - print_error "${pick_out}" - git_recover -fi - -# get a list of unmerged files -unmerged_files=$(git diff-files --diff-filter=U | sed 's/^[^\t]*\t//') -git_retval=$? -if [[ $git_retval != 0 ]]; then - print_error "${pick_out}" - git_recover -fi - -# simply amend if the pick was successful -if [[ $pick_retval == 0 && -z $unmerged_files ]]; then - verbose_print "${pick_out}" - verbose_print "----------" - if [[ ${NO_AUTOCOMMIT} > 0 ]]; then - verbose_print "No conflicts to resolve, nothing to do." - verbose_print "Please run git commit ${GIT_AMEND_OPTS} --amend" \ - "after making all necessary changes." - verbose_print "Use ${GIT_RECOVER} to recover." - else - verbose_print "No conflicts to resolve, running amend." - git_autoamend - fi - exit 0 -fi - -# sanity check -if [[ -z $unmerged_files ]]; then - print_error "${pick_out}" - print_error "----------" - print_error "git cherry-pick failed with status 1," \ - "\nbut no unmerged files were found." - git_recover -fi - -# if $AUTORESOLVE isn't there (but other conflicts are), simply exit -if [[ -z $(echo "${unmerged_files}" | grep ${AUTORESOLVE}) ]]; then - print_error "${pick_out}" - echo "----------" - verbose_print "${AUTORESOLVE} not found as unmerged." - echo "Please run git commit ${GIT_AMEND_OPTS} --amend" \ - "after resolving all conflicts." - echo "To recover from the resolution, use ${GIT_RECOVER}." - exit ${CONFLICT_RETVAL} -fi - -# do the resolution - use old version of the file -if [[ -f ${AUTORESOLVE} ]]; then - verbose_print "${pick_out}" - verbose_print "----------" - verbose_print "Auto-resolving ${AUTORESOLVE} using old version." - git show :2:${AUTORESOLVE} > ${AUTORESOLVE} - [[ $? != 0 ]] && git_recover - git add ${AUTORESOLVE} - [[ $? != 0 ]] && git_recover -# echo "Resolution of ${AUTORESOLVE} finished successfuly." -else - print_error "${pick_out}" - print_error "----------" - print_error "error: ${AUTORESOLVE} not found, cannot resolve" - git_recover -fi - -# if $AUTORESOLVE was the only conflict, amend the commit -if [[ $(echo "${unmerged_files}" | wc -l) == 1 ]]; then - verbose_print "----------" - if [[ ${NO_AUTOCOMMIT} > 0 ]]; then - verbose_print "All done, autocommit disabled, nothing to do." - verbose_print "Please run git commit ${GIT_AMEND_OPTS} --amend" \ - "after making all necessary changes." - verbose_print "Use ${GIT_RECOVER} to recover." - else - verbose_print "All done, running git commit ${GIT_AMEND_OPTS} --amend ..." - git_autoamend - fi - exit 0 - -# else let the user do all other conflict resolutions -else - print_error "${pick_out}" - echo "----------" - echo "Please run git commit ${GIT_AMEND_OPTS} --amend" \ - "after resolving all conflicts." - echo "To recover from the resolution, use ${GIT_RECOVER}." - exit ${CONFLICT_RETVAL} -fi diff --git a/contrib/backporting/update-commit-log.sh b/contrib/backporting/update-commit-log.sh deleted file mode 100644 index 9298bb3fc..000000000 --- a/contrib/backporting/update-commit-log.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# Simple helper script to create backport lists - -# By user defined (remote/branch to the to-be-backported history) -COMPARE_PATH="wotlk/master" -OUTPUT_FILE="contrib/backporting/todo_wotlk_commits.log" - -# By user defined (text format) -#SMALL_FORMAT="wotlk: %h * %an (committer %cn)" -#FULL_FORMAT="${SMALL_FORMAT}: %s" -#FOOTER_FORMAT="FILE LAST UPDATED BASED ON... ${SMALL_FORMAT}" - -# By user defined (Textile markup based wiki format) -SMALL_FORMAT="\"three\":http://github.com/mangosthree/server/commit/%h: %h * %an (committer %cn)" -FULL_FORMAT="%n* ${SMALL_FORMAT}
%s"
-FOOTER_FORMAT="
FILE LAST UPDATED BASED ON... ${SMALL_FORMAT}" - -# param1 must be the commit hash of last backported commit (of original commit) -if [ "$#" != "1" ] -then - echo "You must provide the last commit's hash of the \"$OUTPUT_FILE\" file" - exit 1 -fi - -# are we in git root dir? -if [[ ! -d .git/ ]]; then - echo "ERROR: This script is expected to be called from repository root directory" - echo "Try: contrib/backporting/update-commit-log.sh" - exit 1 -fi - -HASH=$1 - -git log $HASH..$COMPARE_PATH --pretty=format:"${FULL_FORMAT}" --reverse --dirstat >> $OUTPUT_FILE -echo "" >> $OUTPUT_FILE -echo "$(git log -1 --pretty="${FOOTER_FORMAT}" $COMPARE_PATH)" >> $OUTPUT_FILE -echo "" >> $OUTPUT_FILE diff --git a/contrib/cleanupTools/.gitignore b/contrib/cleanupTools/.gitignore deleted file mode 100644 index 5b5118b5b..000000000 --- a/contrib/cleanupTools/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cleanupTools.config diff --git a/contrib/cleanupTools/cleanupHistory.sh b/contrib/cleanupTools/cleanupHistory.sh deleted file mode 100644 index 22ede2a3a..000000000 --- a/contrib/cleanupTools/cleanupHistory.sh +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/sh -# -# Tool to rebase a branch with cleaned commits -# -# Required: -# - some tool for the cleanup -# - base commit from which on the current branch shall be cleaned - -# Do config stuff -sh "${0%/*}/cleanupToolConfig.sh" -if [ "$?" != "0" ] -then - echo "You need to edit the configuration file before you can use this tool!" - echo "Configuration file: ${0%/*}/cleanupTools.config" - exit 0 -fi - -# And use config settings -. "${0%/*}/cleanupTools.config" - -if [ "$BASE_COMMIT" = "" ] -then - echo "You did not specify a base-commit onto which to rebuild history" - echo "or another unexpected error happened.." - exit 1 -fi - -# First: commit all changes onto current branch -git commit -a -m"Cleanup History Commit: Pending Changes of WorkDir" - -# Create list of commits that needs to be processed -COMMIT_LIST=`git log --reverse --format=format:"%H" $BASE_COMMIT..HEAD` - -# prepare history_cleanup branch -git checkout -b history_cleanup $BASE_COMMIT -# cleanup history -echo "Cleanup History Tool: Cleanup initial state before rewriting history(might result in an empty commit)" -$CLEANUP_TOOL > /dev/null -git commit -a -m"Cleanup History Commit: Cleanup state before starting cleaning history" - -for commit in $COMMIT_LIST -do - git checkout -b history_cleanup_tmp $commit - [[ $? != 0 ]] && exit 1 - echo "Cleanup History Tool: Cleanup after commit $commit)" - $CLEANUP_TOOL > /dev/null - git commit -a -m"Cleanup History Commit: Temp cleaned" --allow-empty - [[ $? != 0 ]] && exit 1 - git checkout history_cleanup - [[ $? != 0 ]] && exit 1 - - ## Catch differences - git diff --binary history_cleanup..history_cleanup_tmp > history_cleanup_tmp.patch - - # Get committer information to store it - COMMITTER_N=$(git show -s --pretty=format:'%cn' ${commit}) - [[ $? != 0 ]] && exit 1 - COMMITTER_M=$(git show -s --pretty=format:'%ce' ${commit}) - [[ $? != 0 ]] && exit 1 - COMMITTER_D=$(git show -s --pretty=format:'%cd' ${commit}) - [[ $? != 0 ]] && exit 1 - GIT_COMMITTER_NAME=$COMMITTER_N; GIT_COMMITTER_EMAIL=$COMMITTER_M; GIT_COMMITTER_DATE=$COMMITTER_D; - export GIT_COMMITTER_NAME; export GIT_COMMITTER_EMAIL; export GIT_COMMITTER_DATE; - - # Two cases: either diff is identical to original commit, or not - git diff --binary $commit^..$commit > history_cleanup_compare.patch - DIFF_COUNT=`diff history_cleanup_tmp.patch history_cleanup_compare.patch | grep ">" | grep -v "> index " | wc -l` - echo "Current State: Diffcount=$DIFF_COUNT" - if [ "$DIFF_COUNT" = " 0" ] - then # identical# TODO this is too strict! - git cherry-pick $commit - else # different, use new commit - # commit object hash - COMMIT_HASH=$(git show -s --pretty=format:'%h' ${commit}) - [[ $? != 0 ]] && exit 1 - # subject - COMMIT_SUBJECT=$(git show -s --pretty=format:'%s' ${commit}) - [[ $? != 0 ]] && exit 1 - # body - COMMIT_BODY=$(git show -s --pretty=format:'%b' ${commit}) - [[ $? != 0 ]] && exit 1 - # whole message - COMMIT_MESSAGE=$(echo -e "${COMMIT_SUBJECT}\n\n${COMMIT_BODY}\n\n(cleaned version of ${COMMIT_HASH})") - [[ $? != 0 ]] && exit 1 - - # Apply Cleaned changeset - git apply history_cleanup_tmp.patch - if [ $? != 0 ] - then - echo "Could not apply patch with git methods, try with patch tool directly? (y/n)" - read line - if [ "$line" = "y" ] - then - patch -p1 -d. < history_cleanup_tmp.patch - echo "Please check manually if this worked.." - echo "Did it work? (y/n)" - read line - if [ "$line" != "y" ] - then - exit 1 - fi - fi - fi - if [ $? != 0 ] - then - echo "Could not apply patch, store in history_cleanup_tmp.patch" - exit 1 - fi - - # Git add new files - NEW_FILES_LIST=`grep -B1 "new file mode" history_cleanup_tmp.patch | grep "diff --git a/" | sed 's!diff --git a/\(.*\) .*!\1!'` - for fline in $NEW_FILES_LIST - do - git add $fline - [[ $? != 0 ]] && exit 1 - done - - # Commit just created commit with original information - git commit -a --allow-empty -C"$commit" - [[ $? != 0 ]] && exit 1 - git commit --amend --allow-empty -m"${COMMIT_MESSAGE}" - [[ $? != 0 ]] && exit 1 - fi - - git branch -D history_cleanup_tmp - [[ $? != 0 ]] && exit 1 -done - -rm history_cleanup_tmp.patch -rm history_cleanup_compare.patch - -GIT_COMMITTER_NAME=""; GIT_COMMITTER_EMAIL=""; GIT_COMMITTER_DATE=""; -export GIT_COMMITTER_NAME; export GIT_COMMITTER_EMAIL; export GIT_COMMITTER_DATE; diff --git a/contrib/cleanupTools/cleanupStyle.sh b/contrib/cleanupTools/cleanupStyle.sh deleted file mode 100644 index 5b8dbb66a..000000000 --- a/contrib/cleanupTools/cleanupStyle.sh +++ /dev/null @@ -1,203 +0,0 @@ -#!/bin/sh - -# SUPPORTED: ASTYLE COMMENT_STYLE OVERRIDE_CORRECTNESS -# ASTYLE <- runs AStyle -# COMMENT_STYLE <- converts //bla to // bla (note, // Bla might be better, but this would conflict with code (at least) -# Use at own Risk: -# OVERRIDE_CORRECTNESS[2] <- Appends override correctness (add 2 for second pass) - -# Do config stuff -sh "${0%/*}/cleanupToolConfig.sh" -if [ "$?" != "0" ] -then - echo "You need to edit the configuration file before you can use this tool!" - echo "Configuration file: ${0%/*}/cleanupTools.config" - exit 0 -fi - -# And use config settings -. "${0%/*}/cleanupTools.config" - - -## Internal Stuff - -# Mangos Cleanup options for AStyle -OPTIONS="--convert-tabs --align-pointer=type --suffix=none \ - --keep-one-line-blocks --keep-one-line-statements \ - --indent-classes --indent-switches --indent-namespaces \ - --pad-header --unpad-paren --pad-oper --style=allman" - -if [ "$DO_ON" = "MANGOS_SRC" ] -then - FILEPATH=$BASEPATH/src - OPTIONS="$OPTIONS --exclude=ScriptDev2" -elif [ "$DO_ON" = "MANGOS_CONTRIB" ] -then - FILEPATH=$BASEPATH/contrib -elif [ "$DO_ON" = "MANGOS_WHOLE" ] -then - FILEPATH=$BASEPATH - OPTIONS="$OPTIONS --exclude=ScriptDev2" -elif [ "$DO_ON" = "SD2" ] -then - FILEPATH=$BASEPATH/src/bindings/ScriptDev2 -else - exit 1 -fi - -OPTIONS="$OPTIONS --recursive" - -#################################################################################################### -## USING ASTYLE UPDATING ## -#################################################################################################### -if [ $DO = ASTYLE ] -then - echo "Process $FILEPATH with options $MOPTIONS" - $ASTYLE $OPTIONS "$FILEPATH/*.cpp" "$FILEPATH/*.h" - - #Restore style of auto-generated sql-files - if [ "$DO_ON" = "MANGOS_SRC" -o "$DO_ON" = "MANGOS_WHOLE" ] - then - if [ -f "$BASEPATH/src/shared/revision_nr.h" ] - then - sed 's/^#define REVISION_NR/ #define REVISION_NR/g' < ${BASEPATH}/src/shared/revision_nr.h > temp - mv temp "$BASEPATH/src/shared/revision_nr.h" - fi - if [ -f "$BASEPATH/src/shared/revision_sql.h" ] - then - sed 's/^#define REVISION_DB/ #define REVISION_DB/g' < ${BASEPATH}/src/shared/revision_sql.h > temp - mv temp "$BASEPATH/src/shared/revision_sql.h" - fi - elif [ "$DO_ON" = "SD2" ] - then - if [ -f "$BASEPATH/src/bindings/ScriptDev2/sd2_revision_nr.h" ] - then - sed 's/^#define SD2_REVISION_NR/ #define SD2_REVISION_NR/g' < ${BASEPATH}/src/bindings/ScriptDev2/sd2_revision_nr.h > temp - mv temp "$BASEPATH/src/bindings/ScriptDev2/sd2_revision_nr.h" - fi - fi - - echo "Processing $DO on $DO_ON done" - exit 0 -fi - - -#################################################################################################### -## UNIFYING COMMENTS ## -#################################################################################################### -## Make comments neater //bla => // bla ## note for uppercase s:\// \([a-z]\):// \1:g -if [ $DO = COMMENT_STYLE ] -then - if [ "$DO_ON" = "MANGOS_SRC" ] - then - LIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.cpp" -print -o -iname "*.h" -print ` - elif [ "$DO_ON" = "SD2" ] - then - LIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.cpp" -o -iname "*.h" ` - else - echo "Unsupported combination with DO and DO_ON" - exit 1 - fi - - for l in $LIST - do - echo "Converting comments in $l" - sed '/http:/ !s:\//\([a-zA-Z0-9]\):// \1:g; - s#^\(............................................................\) [ ]*//#\1//#g; - /^..............................................\/[\/]*$/ !s#^\(..................................................\)//#\1 //#g; ' "$l" > temp - if [ "$?" != "0" ] - then - echo "An error HAPPENED" - exit 1 - fi - - mv temp "$l" - done - - echo "Processing $DO on $DO_ON done" - exit 0 -fi - -#################################################################################################### -## OVERRIDE CORRECTNESS ## -#################################################################################################### -# use OVERRIDE_CORRECTNESS to create helper file listing all virtual methods -# use OVERRIDE_CORRECTNESS2 to add the word "override" after all functions with virtual names - -if [ "$DO_ON" != "MANGOS_SRC" -a "$DO_ON" != "SD2" ] -then - echo "OVERRIDE atm only supported for MANGOS_SRC or SD2 target" - exit 0 -fi - -if [ $DO = OVERRIDE_CORRECTNESS ] -then - #Create a list of all virtual functions in mangos (class scope) - if [ $DO_ON = MANGOS_SRC ] - then - HEADERLIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.h" -print` - else - HEADERLIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.h"` - HEADERLIST="${HEADERLIST} ${BASEPATH}/src/game/CreatureAI.h" - HEADERLIST="${HEADERLIST} ${BASEPATH}/src/game/InstanceData.h" - fi - - rm virtuals - for h in $HEADERLIST - do - grep "virtual" "$h" >> virtuals - done - - #Filter comment lines - sed -n '/^[ ]*\/\// !p' virtuals | sed -n '/^[ ]*\/\*/ !p' | \ - ##Get function name - sed -r -n '/^[ ]*virtual[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*const[\*]*[ ][]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*const[ ]*[a-zA-Z_~0-9\*:]*[ ]*const[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} - /^[ ]*virtual[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*const[ ]*[a-zA-Z_~0-9\*:]*[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} - /^[ ]*virtual[ ][ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*const[\*]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:]*[ ]*const[\*]*[ ]*([a-zA-Z_~0-9]*).*/\1/g; tEnde} - /^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:&]*[ ][ ]*[a-zA-Z_~0-9]*[ ]*\(.*\)/ { s/^[ ]*virtual[ ]*[a-zA-Z_~0-9\*:]*[ ][ ]*([a-zA-Z_~0-9]*).*/\1/g;} - :Ende; p' > virtualNames - - ##Make its entries unique - sort < virtualNames > virtuals - uniq < virtuals > virtualNames - - echo "Check file virtualNames for inconsitencies!" - rm virtuals - - echo "Processing $DO on $DO_ON done" - exit 0 -fi - -if [ $DO = OVERRIDE_CORRECTNESS2 ] -then - ## Assume virtualNames is good - if [ $DO_ON = MANGOS_SRC ] - then - FILELIST=`find ${BASEPATH}/src/ -path "${BASEPATH}/src/bindings/ScriptDev2" -prune -o -type f -iname "*.h" -print` - else - FILELIST=`find ${BASEPATH}/src/bindings/ScriptDev2 -type f -iname "*.cpp" -o -iname "*.h"` - fi - - for h in $FILELIST - do - echo "Progress file $h" - while read f - do - # basic pattern: NAME(..)...[;] - PARSE="s/( "$f"\(.*\)[ ]*const[\*]*);/\1 override;/g; t - s/( "$f"\(.*\));/\1 override;/g; t - s/( "$f"\(.*\)[ ]*const[\*]*)$/\1 override/g; t - s/( "$f"\(.*\))$/\1 override/g; t - s/( "$f"\(.*\)[ ]*const[\*]*)([ ].*)/\1 override\2/g; t - s/( "$f"\(.*\))([ ].*)/\1 override\2/g" - sed -r "$PARSE" "$h" > temp - mv temp "$h" - done < virtualNames - done - - echo "Processing $DO on $DO_ON done" - exit 0 - -fi - -exit 0 diff --git a/contrib/cleanupTools/cleanupToolConfig.sh b/contrib/cleanupTools/cleanupToolConfig.sh deleted file mode 100644 index 63a2f7cbe..000000000 --- a/contrib/cleanupTools/cleanupToolConfig.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -# Helper script to create a config file for the cleanup tools -# The created config file must be edited manually - - -if [ -f "${0%/*}/cleanupTools.config" ] -then - # file already exists, exit - exit 0 -fi - -# Create file -cat << EOF > "${0%/*}/cleanupTools.config" -#!/bin/sh - -# Basic configuration for the cleanup helper scripts with mangos -# Be sure to read this whole file and edit the variables as required -# -############################################################ -# Generic options: -############################################################ -# Define the path to folder relatively from where you want to call the scripts. -# The cleanupHistory.sh script must be called from within the repository that is to be cleaned! -# -BASEPATH="." -# -# Path to Astyle from the directory -ASTYLE="../AStyle/bin/AStyle.exe" - - -############################################################ -# The cleanupStyle.sh tool: -############################################################ -# Job selection options are: -# DO with possible choices: ASTYLE (to call the Astyle tool) -# COMMENT_STYLE (to change comments from //foo to // foo and align them to column 61 if possible -# OVERRIDE_CORRECTNESS[2] use at own RISK, this is maybe not too usefull -DO="ASTYLE" -# -# DO_ON with possible choices: MANGOS_SRC to invoke the above cleanup routine on /src directory and subdirectories -# MANGOS_CONTRIB to invoke the above cleanup routine on /contrib directory and subdirectories -# MANGOS_WHOLE to invoke the above cleanup routine on directory and subdirectories -# SD2 to invoke the above cleanup routine on /src/bindings/ScriptDev2 directory and subdirectories -DO_ON="MANGOS_SRC" - - -############################################################ -# The cleanupHistory.sh tool: -############################################################ -# This tool will USE the cleanupStyle.sh tool to cleanup the history of the current branch with the settings above -# It will clean the history based on the variable BASE_COMMIT that needs to be defined here -BASE_COMMIT="" - - - -### -# Internal variables, do not change except you know what you are doing -### -# cleanup-tool -CLEANUP_TOOL="\$BASEPATH/contrib/cleanupTools/cleanupStyle.sh" -# path from current's caller position to ASTYLE -ASTYLE="\$BASEPATH/\$ASTYLE" - -EOF - -# Return wil error, to display message if file is not found -exit 1 diff --git a/contrib/dbcEditer/BcdEditer.ini b/contrib/dbcEditer/BcdEditer.ini deleted file mode 100644 index 99284e8b9..000000000 --- a/contrib/dbcEditer/BcdEditer.ini +++ /dev/null @@ -1,34 +0,0 @@ -[TaxiNodes.dbc] -ColType2=0 -ColType3=1 -ColType4=1 -[SpellRange.dbc] -ColType2=0 -ColType3=0 -ColType1=0 -[Talent.dbc] -ColType1=0 -ColType5=0 -ColType4=0 -[test.dbc] -ColType1=0 -ColType3=1 -ColType2=0 -[TalentTab.dbc] -ColType15=2 -[TalentTab_new.dbc] -ColType15=2 -[SpellIcon.dbc] -ColType2=0 -ColType1=0 -[FactionGroup.dbc] -ColType12=0 -ColType3=2 -ColType2=0 -ColType8=0 -[gtRegenMPPerSpt.dbc] -ColType1=1 -[gtOCTRegenMP.dbc] -ColType1=1 -[gtOCTRegenHP.dbc] -ColType1=1 diff --git a/contrib/dbcEditer/SearchFrm.cpp b/contrib/dbcEditer/SearchFrm.cpp deleted file mode 100644 index f04a99503..000000000 --- a/contrib/dbcEditer/SearchFrm.cpp +++ /dev/null @@ -1,26 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop - -#include "SearchFrm.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TFrmSearch* FrmSearch; -//--------------------------------------------------------------------------- -__fastcall TFrmSearch::TFrmSearch(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall TFrmSearch::btOkClick(TObject* Sender) -{ - ModalResult = mrOk; -} -//--------------------------------------------------------------------------- -void __fastcall TFrmSearch::btCancelClick(TObject* Sender) -{ - ModalResult = mrCancel; -} -//--------------------------------------------------------------------------- diff --git a/contrib/dbcEditer/SearchFrm.ddp b/contrib/dbcEditer/SearchFrm.ddp deleted file mode 100644 index cdc0ee8c2b54a98895d906932c4351134611c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxFz;K0Pl$;KI)SCUzhlbT}4#=r!G E07AM8lK=n! diff --git a/contrib/dbcEditer/SearchFrm.dfm b/contrib/dbcEditer/SearchFrm.dfm deleted file mode 100644 index 06a3613a7..000000000 --- a/contrib/dbcEditer/SearchFrm.dfm +++ /dev/null @@ -1,63 +0,0 @@ -object FrmSearch: TFrmSearch - Left = 261 - Top = 194 - Width = 324 - Height = 215 - Caption = 'Seach F3 Seach Next' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - PixelsPerInch = 96 - TextHeight = 13 - object lbseach: TLabel - Left = 48 - Top = 16 - Width = 57 - Height = 17 - AutoSize = False - Caption = 'Input:' - end - object rgSI: TRadioGroup - Left = 64 - Top = 40 - Width = 185 - Height = 97 - Caption = 'Seach Dir' - ItemIndex = 1 - Items.Strings = ( - 'Seach up' - 'Seach down' - 'Seach up Current rol' - 'Seach down Current rol') - TabOrder = 0 - end - object edSeach: TEdit - Left = 120 - Top = 16 - Width = 121 - Height = 21 - TabOrder = 1 - end - object btOk: TButton - Left = 64 - Top = 152 - Width = 75 - Height = 25 - Caption = 'Ok' - TabOrder = 2 - OnClick = btOkClick - end - object btCancel: TButton - Left = 176 - Top = 152 - Width = 75 - Height = 25 - Caption = 'Cancel' - TabOrder = 3 - OnClick = btCancelClick - end -end diff --git a/contrib/dbcEditer/SearchFrm.h b/contrib/dbcEditer/SearchFrm.h deleted file mode 100644 index 4a70c8f6a..000000000 --- a/contrib/dbcEditer/SearchFrm.h +++ /dev/null @@ -1,29 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef SearchFrmH -#define SearchFrmH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TFrmSearch : public TForm -{ - __published: // IDE-managed Components - TRadioGroup* rgSI; - TEdit* edSeach; - TLabel* lbseach; - TButton* btOk; - TButton* btCancel; - void __fastcall btOkClick(TObject* Sender); - void __fastcall btCancelClick(TObject* Sender); - private: // User declarations - public: // User declarations - __fastcall TFrmSearch(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TFrmSearch* FrmSearch; -//--------------------------------------------------------------------------- -#endif diff --git a/contrib/dbcEditer/TitleFrm.cpp b/contrib/dbcEditer/TitleFrm.cpp deleted file mode 100644 index e17c6a6e7..000000000 --- a/contrib/dbcEditer/TitleFrm.cpp +++ /dev/null @@ -1,26 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop - -#include "TitleFrm.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TFrmTitle* FrmTitle; -//--------------------------------------------------------------------------- -__fastcall TFrmTitle::TFrmTitle(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -void __fastcall TFrmTitle::Button1Click(TObject* Sender) -{ - ModalResult = mrOk; -} -//--------------------------------------------------------------------------- -void __fastcall TFrmTitle::Button2Click(TObject* Sender) -{ - ModalResult = mrCancel; -} -//--------------------------------------------------------------------------- diff --git a/contrib/dbcEditer/TitleFrm.ddp b/contrib/dbcEditer/TitleFrm.ddp deleted file mode 100644 index cdc0ee8c2b54a98895d906932c4351134611c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxFz;K0Pl$;KI)SCUzhlbT}4#=r!G E07AM8lK=n! diff --git a/contrib/dbcEditer/TitleFrm.dfm b/contrib/dbcEditer/TitleFrm.dfm deleted file mode 100644 index 0d1570f38..000000000 --- a/contrib/dbcEditer/TitleFrm.dfm +++ /dev/null @@ -1,51 +0,0 @@ -object FrmTitle: TFrmTitle - Left = 328 - Top = 252 - Width = 235 - Height = 112 - BorderIcons = [biSystemMenu] - Caption = 'Col Title' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poDesktopCenter - PixelsPerInch = 96 - TextHeight = 13 - object Label1: TLabel - Left = 8 - Top = 24 - Width = 65 - Height = 13 - AutoSize = False - Caption = 'Title:' - end - object edTitle: TEdit - Left = 80 - Top = 16 - Width = 121 - Height = 21 - TabOrder = 0 - end - object Button1: TButton - Left = 24 - Top = 48 - Width = 75 - Height = 25 - Caption = 'Ok' - TabOrder = 1 - OnClick = Button1Click - end - object Button2: TButton - Left = 136 - Top = 48 - Width = 75 - Height = 25 - Caption = 'Cancel' - TabOrder = 2 - OnClick = Button2Click - end -end diff --git a/contrib/dbcEditer/TitleFrm.h b/contrib/dbcEditer/TitleFrm.h deleted file mode 100644 index 18a6b83db..000000000 --- a/contrib/dbcEditer/TitleFrm.h +++ /dev/null @@ -1,27 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef TitleFrmH -#define TitleFrmH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TFrmTitle : public TForm -{ - __published: // IDE-managed Components - TLabel* Label1; - TEdit* edTitle; - TButton* Button1; - TButton* Button2; - void __fastcall Button1Click(TObject* Sender); - void __fastcall Button2Click(TObject* Sender); - private: // User declarations - public: // User declarations - __fastcall TFrmTitle(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TFrmTitle* FrmTitle; -//--------------------------------------------------------------------------- -#endif diff --git a/contrib/dbcEditer/dbcedit.cpp b/contrib/dbcEditer/dbcedit.cpp deleted file mode 100644 index 7a8a3ccaa..000000000 --- a/contrib/dbcEditer/dbcedit.cpp +++ /dev/null @@ -1,826 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop - -#include "dbcedit.h" -#include "stdio.h" -#include "IdGlobal.hpp" -#include -#include "TitleFrm.h" -#include -#include "thOpenSource.h" -#include "SearchFrm.h" -//#include "SysUtils.hpp" - - -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TFrmMain* FrmMain; -//--------------------------------------------------------------------------- -__fastcall TFrmMain::TFrmMain(TComponent* Owner) - : TForm(Owner) -{ - OpenOk = false; - Term = false; -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btOpenClick(TObject* Sender) -{ - if (OpenDialog1->Execute()) - { - if (FileExists(OpenDialog1->FileName)) - { - OpenOk = false; - if (thOpen) - { - thOpen->Terminate(); - } - thOpen = new thOpenFile(false); - //thOpen->Priority = tpTimeCritical; - pnFileName->Caption = OpenDialog1->FileName; - } - else - { - OpenOk = false; - pnFileName->Caption = ""; - } - } -} -//--------------------------------------------------------------------------- -void __fastcall TFrmMain::btSaveClick(TObject* Sender) -{ - //CurrentOpenFile; - if (OpenOk) - { - SaveToFile(CurrentOpenFile.c_str()); - } - else - { - ShowMessage("文件未打开完成!"); - } -} -//--------------------------------------------------------------------------- - -void TFrmMain::SaveToFile(const char* pszFileName) -{ - char szFileName[255]; - FILE* stream; - - - - - fnsplit(pszFileName, 0, 0, szFileName, 0); - strcat(szFileName, "_new.dbc"); - - - AnsiString NewFileName = ExtractFilePath(Application->ExeName) + szFileName; //=pszFileName; - int iFileHandle; //文件句柄 - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - - DWORD w; - - CopyFileTo(pszFileName, NewFileName); - - iFileHandle = FileOpen(NewFileName, fmOpenRead | fmOpenWrite); //打开文件 - - if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - == NULL) - { - ShowMessage("打开文件出错"); - return; - } - - - int iVal; - float fVal; - bool isFloat; - int ColType; - - FileSeek(iFileHandle, 0x14, 0); - TIniFile* ini; - ini = new TIniFile(iniSetFile); - - for (int i = 1; i < sgEdit->RowCount; i++) - { - for (int j = 1; j < sgEdit->ColCount; j++) - { - if (j == 1) //ID - { - iVal = StrToInt(sgEdit->Cells[j][i]); - FileWrite(iFileHandle, &iVal, 4); - } - else - { - - //ColType= ini->ReadInteger(SectionName,"ColType"+IntToStr(j-1),0); - //thOpen->ColType[10000]; - - switch (thOpen->ColType[j]) - { - case 0: //整型 - iVal = StrToFloat(sgEdit->Cells[j][i]); - FileWrite(iFileHandle, &iVal, 4); - break; - case 1: //浮点 - fVal = StrToFloat(sgEdit->Cells[j][i]); - FileWrite(iFileHandle, &fVal, 4); - break; - case 2: //文本 - fseek(stream, 0x14 + (i * (sgEdit->ColCount - 1) + (j - 1)) * 4, 0); - fread(&iVal, 4, 1, stream); - FileWrite(iFileHandle, &iVal, 4); - break; - default: //整型 - iVal = StrToFloat(sgEdit->Cells[j][i]); - FileWrite(iFileHandle, &iVal, 4); - } - } - } - } - FileClose(iFileHandle); - fclose(stream); - - delete ini; - ShowMessage("Save To File:" + NewFileName); -} -void __fastcall TFrmMain::btIntTypeClick(TObject* Sender) -{ - if (OpenOk == true) - { - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - TIniFile* ini; - ini = new TIniFile(iniSetFile); - ini->WriteInteger(SectionName, "ColType" + IntToStr(sgEdit->Col), 0); - delete ini; - thOpen->ColType[sgEdit->Col] = 0; - //重新打开对应列的值 - //OpenFileCol(AnsiString FileName,int ColType); - OpenFileCol(CurrentOpenFile, sgEdit->Col, 0); - } -} -//--------------------------------------------------------------------------- - - -void __fastcall TFrmMain::btFloatTypeClick(TObject* Sender) -{ - if (OpenOk == true) - { - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - TIniFile* ini; - ini = new TIniFile(iniSetFile); - ini->WriteInteger(SectionName, "ColType" + IntToStr(sgEdit->Col), 1); - delete ini; - thOpen->ColType[sgEdit->Col] = 1; - OpenFileCol(CurrentOpenFile, sgEdit->Col, 1); - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::PopupMenu1Popup(TObject* Sender) -{ - if (OpenOk == true) - { - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - int ColType; - TIniFile* ini; - ini = new TIniFile(iniSetFile); - ColType = ini->ReadInteger(SectionName, "ColType" + IntToStr(sgEdit->Col), 0); - delete ini; - switch (ColType) - { - case 0: - btIntType->Checked = true; - btFloatType->Checked = false; - btTxtType->Checked = false; - break; - case 1: - btIntType->Checked = false; - btFloatType->Checked = true; - btTxtType->Checked = false; - break; - case 2: - btIntType->Checked = false; - btFloatType->Checked = false; - btTxtType->Checked = true; - break; - default: - btIntType->Checked = true; - btFloatType->Checked = false; - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::N1Click(TObject* Sender) -{ - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - int ColType; - FrmTitle->edTitle->Text = sgEdit->Cells[sgEdit->Col][0]; - if (FrmTitle->ShowModal() == mrOk) - { - TIniFile* ini; - ini = new TIniFile(iniSetFile); - ini->WriteString(SectionName, "ColTitle" + IntToStr(sgEdit->Col), FrmTitle->edTitle->Text); - delete ini; - sgEdit->Cells[sgEdit->Col][0] = FrmTitle->edTitle->Text; - } -} -//--------------------------------------------------------------------------- - - - -void __fastcall TFrmMain::FormDestroy(TObject* Sender) -{ - if (thOpen) - { - thOpen->Terminate(); - SleepEx(200, 0); - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::ToolButton1Click(TObject* Sender) -{ - bool SeFlag = true; - if (FrmSearch->ShowModal() == mrOk) - { - switch (FrmSearch->rgSI->ItemIndex) - { - case 0: //向上找; - for (int i = sgEdit->ColCount * sgEdit->Row + sgEdit->Col - 1; i > sgEdit->ColCount; i--) - { - if (i % sgEdit->ColCount != 0) - { - if (0 == CompareStr(sgEdit->Cells[i - sgEdit->ColCount * (i / sgEdit->ColCount)][i / sgEdit->ColCount], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Col = i - sgEdit->ColCount * i / sgEdit->ColCount; - sgEdit->Row = i / sgEdit->ColCount; - SeFlag = false; - break; - } - } - } - if (SeFlag) ShowMessage("Seach Top,Find Nothing."); - break; - case 1: //向下找; - for (int i = sgEdit->ColCount * sgEdit->Row + sgEdit->Col + 1; i < sgEdit->ColCount * sgEdit->RowCount; i++) - { - if (i % sgEdit->ColCount != 0) - { - if (0 == CompareStr(sgEdit->Cells[i - sgEdit->ColCount * (i / sgEdit->ColCount)][i / sgEdit->ColCount], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Col = i - sgEdit->ColCount * (i / sgEdit->ColCount); - sgEdit->Row = i / sgEdit->ColCount; - SeFlag = false; - break; - } - } - } - if (SeFlag) ShowMessage("Seach End,Find Nothing"); - break; - case 2: //当前列向上找; - for (int i = sgEdit->Row; i > 1; i--) - { - if (0 == CompareStr(sgEdit->Cells[sgEdit->Col][i], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Row = i; - SeFlag = false; - break; - } - } - if (SeFlag) ShowMessage("Seach col top,Find Nothing"); - break; - case 3: //当前列向下找; - for (int i = sgEdit->Row; i < sgEdit->RowCount; i++) - { - if (0 == CompareStr(sgEdit->Cells[sgEdit->Col][i], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Row = i; - SeFlag = false; - break; - } - } - if (SeFlag) ShowMessage("Seach col end,Find Nothing."); - break; - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::sgEditKeyDown(TObject* Sender, WORD& Key, - TShiftState Shift) -{ - - bool SeFlag = true; - if (Key == VK_F3) - { - switch (FrmSearch->rgSI->ItemIndex) - { - case 0: //向上找; - for (int i = sgEdit->ColCount * sgEdit->Row + sgEdit->Col - 1; i > sgEdit->ColCount; i--) - { - if (i % sgEdit->ColCount != 0) - { - if (0 == CompareStr(sgEdit->Cells[i - sgEdit->ColCount * (i / sgEdit->ColCount)][i / sgEdit->ColCount], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Col = i - sgEdit->ColCount * i / sgEdit->ColCount; - sgEdit->Row = i / sgEdit->ColCount; - SeFlag = false; - break; - } - } - } - if (SeFlag) ShowMessage("Seach Top,Find Nothing."); - break; - case 1: //向下找; - for (int i = sgEdit->ColCount * sgEdit->Row + sgEdit->Col + 1; i < sgEdit->ColCount * sgEdit->RowCount; i++) - { - if (i % sgEdit->ColCount != 0) - { - if (0 == CompareStr(sgEdit->Cells[i - sgEdit->ColCount * (i / sgEdit->ColCount)][i / sgEdit->ColCount], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Col = i - sgEdit->ColCount * (i / sgEdit->ColCount); - sgEdit->Row = i / sgEdit->ColCount; - SeFlag = false; - break; - } - } - } - if (SeFlag) ShowMessage("Seach End,Find Nothing."); - break; - case 2: //当前列向上找; - for (int i = sgEdit->Row; i > 1; i--) - { - if (0 == CompareStr(sgEdit->Cells[sgEdit->Col][i], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Row = i; - SeFlag = false; - break; - } - } - if (SeFlag) ShowMessage("Seach col Top,Find Nothing."); - break; - case 3: //当前列向下找; - for (int i = sgEdit->Row; i < sgEdit->RowCount; i++) - { - if (0 == CompareStr(sgEdit->Cells[sgEdit->Col][i], - FrmSearch->edSeach->Text)) //找到了 - { - sgEdit->Row = i; - SeFlag = false; - break; - } - } - if (SeFlag) ShowMessage("Seach col end,Find Nothing."); - break; - } - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::sgEditSelectCell(TObject* Sender, int ACol, - int ARow, bool& CanSelect) -{ -// -} -//--------------------------------------------------------------------------- -void __fastcall TFrmMain::OpenFileCol(AnsiString FileName, int ColIndex, int ColType) -{ - int iFileHandle; //文件句柄 - char Txtbuf[255]; - int iVal; - float fVal; - FILE* stream; - long curpos, length; - DWORD dwRows, dwCols, dwRowLen, dwTextLen; - - DWORD dwTextStartPos; - char* pTextPtr ; - - - if ((stream = fopen(FileName.c_str(), "r+")) - == NULL) - { - ShowMessage("Open File Error"); - return; - } - - curpos = ftell(stream); - fseek(stream, 0L, SEEK_END); - length = ftell(stream); - - - switch (ColType) - { - case 0: //整型值 Int - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - fseek(stream, 0x14 + (i * (sgEdit->ColCount - 1) + (ColIndex - 1)) * 4, 0); - fread(&iVal, 4, 1, stream); - sgEdit->Cells[ColIndex][i + 1] = IntToStr(iVal); - } - break; - case 1: //浮点值 Float - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - fseek(stream, 0x14 + (i * (sgEdit->ColCount - 1) + (ColIndex - 1)) * 4, 0); - fread(&fVal, 4, 1, stream); - sgEdit->Cells[ColIndex][i + 1] = FloatToStr(fVal); - } - break; - case 2: //文本 Text - fseek(stream, 0x4, 0); - fread(&iVal, 4, 1, stream); - dwRows = iVal; - fread(&iVal, 4, 1, stream); - dwCols = iVal; - fread(&iVal, 4, 1, stream); - dwRowLen = iVal; - fread(&iVal, 4, 1, stream); - dwTextLen = iVal; - - dwTextStartPos = dwRows * dwRowLen + 20; - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - fseek(stream, 0x14 + (i * (sgEdit->ColCount - 1) + (ColIndex - 1)) * 4, 0); - fread(&iVal, 4, 1, stream); - sgEdit->Cells[ColIndex][i + 1] = IntToStr(iVal); - if (dwTextStartPos + iVal < length) - { - fseek(stream, dwTextStartPos + iVal, 0); - fread(Txtbuf, 1, 255, stream); - //pTextPtr = pBuff + dwTextStartPos + lTemp; - sgEdit->Cells[ColIndex][i + 1] = Txtbuf; - } - else - { - sgEdit->Cells[ColIndex][i + 1] = "This Col Not Text!"; - } - } - break; - } - fclose(stream); -} -void __fastcall TFrmMain::Timer1Timer(TObject* Sender) -{ - if (OpenOk) - { - lbOpState->Caption = "Open File Ok."; - } - else - { - lbOpState->Caption = "Open Now....."; - } -} -//--------------------------------------------------------------------------- -//当前格子写入修改文件中 -void __fastcall TFrmMain::N4Click(TObject* Sender) -{ - if (!thOpen) return; - - int iFileHandle; //文件句柄 - char buf[4]; - int iVal; - float fVal; - FILE* stream; - /* - if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - == NULL) - { - ShowMessage("打开文件出错"); - return; - } - */ - iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead | fmOpenWrite); //打开文件 - - switch (thOpen->ColType[sgEdit->Col]) - { - case 0: //整型值 - //for(int i=0;iRowCount-1;i++){ - /* - fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); - iVal=StrToInt(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); - memcpy(buf, &iVal, 4); - for(int i=0;i<4;i++) - fwrite(buf+i, 1, 1, stream); - */ - iVal = StrToInt(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); - memcpy(buf, &iVal, 4); - FileSeek(iFileHandle, 0x14 + ((sgEdit->Row - 1) * (sgEdit->ColCount - 1) + (sgEdit->Col - 1)) * 4, 0); - FileWrite(iFileHandle, buf, 4); - //} - break; - case 1: //浮点值 - //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); - //fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); - //fwrite(&fVal, 4, 1, stream); - fVal = StrToFloat(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); - memcpy(buf, &fVal, 4); - FileSeek(iFileHandle, 0x14 + ((sgEdit->Row - 1) * (sgEdit->ColCount - 1) + (sgEdit->Col - 1)) * 4, 0); - FileWrite(iFileHandle, buf, 4); - break; - case 2: //文本不写入 - break; - } - - // fclose(stream); - FileClose(iFileHandle); -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btTxtTypeClick(TObject* Sender) -{ - if (OpenOk == true) - { - AnsiString iniSetFile = ExtractFilePath(Application->ExeName) + "BcdEditer.ini"; - AnsiString SectionName = ExtractFileName(CurrentOpenFile); - TIniFile* ini; - ini = new TIniFile(iniSetFile); - ini->WriteInteger(SectionName, "ColType" + IntToStr(sgEdit->Col), 2); - delete ini; - thOpen->ColType[sgEdit->Col] = 2; - OpenFileCol(CurrentOpenFile, sgEdit->Col, 2); - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::ToolButton3Click(TObject* Sender) -{ - int OldCol; - int OldRow; - OldRow = sgEdit->Row; - OldCol = sgEdit->Col; - if (sgEdit->FixedCols == 1) - { - sgEdit->FixedCols = 2; - if (OldCol != 1) - sgEdit->Col = OldCol; - sgEdit->Row = OldRow; - } - else - { - sgEdit->FixedCols = 1; - sgEdit->Row = OldRow; - if (OldCol != 2) - sgEdit->Col = OldCol; - } -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btRowSaveClick(TObject* Sender) -{ - if (OpenOk == false) return; - - int iFileHandle; //文件句柄 - char Txtbuf[255]; - int iVal; - char buf[4]; - float fVal; - FILE* stream; - long curpos, length; - DWORD dwRows, dwCols, dwRowLen, dwTextLen; - - DWORD dwTextStartPos; - char* pTextPtr ; - - - //if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - // == NULL) - //{ - // ShowMessage("打开文件出错"); - // return; - //} - - //curpos = ftell(stream); - //fseek(stream, 0L, SEEK_END); - //length = ftell(stream); - iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead | fmOpenWrite); //打开文件 - - for (int i = 0; i < sgEdit->ColCount - 1; i++) - { - switch (thOpen->ColType[i]) - { - case 0: //整型值 sgEdit->Row - //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4, 0); - //iVal=StrToInt(sgEdit->Cells[i+1][sgEdit->Row]); - //fwrite(&iVal, 4, 1, stream); - iVal = StrToInt(sgEdit->Cells[i + 1][sgEdit->Row]); - memcpy(buf, &iVal, 4); - FileSeek(iFileHandle, 0x14 + ((sgEdit->Row - 1) * (sgEdit->ColCount - 1) + i) * 4, 0); - FileWrite(iFileHandle, buf, 4); - break; - case 1: //浮点值 - //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4, 0); - //fVal=StrToFloat(sgEdit->Cells[i+1][sgEdit->Row]); - //fwrite(&fVal, 4, 1, stream); - fVal = StrToFloat(sgEdit->Cells[i + 1][sgEdit->Row]); - memcpy(buf, &fVal, 4); - FileSeek(iFileHandle, 0x14 + ((sgEdit->Row - 1) * (sgEdit->ColCount - 1) + i) * 4, 0); - FileWrite(iFileHandle, buf, 4); - break; - case 2: //文本 不存 - break; - } - } - //fclose(stream); - FileClose(iFileHandle); - ShowMessage("The " + IntToStr(sgEdit->Row) + " Row Write Ok!"); -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btColSaveClick(TObject* Sender) -{ - if (OpenOk == false) return; - - int iFileHandle; //文件句柄 - char Txtbuf[255]; - int iVal; - char buf[4]; - float fVal; - FILE* stream; - long curpos, length; - DWORD dwRows, dwCols, dwRowLen, dwTextLen; - - DWORD dwTextStartPos; - char* pTextPtr ; - - iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead | fmOpenWrite); //打开文件 - - //if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - // == NULL) - //{ - // ShowMessage("打开文件出错"); - // return; - //} - - //curpos = ftell(stream); - //fseek(stream, 0L, SEEK_END); - //length = ftell(stream); - - - switch (thOpen->ColType[sgEdit->Col]) - { - case 0: //整型值 - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); - //iVal=StrToInt(sgEdit->Cells[sgEdit->Col][i+1]); - //fwrite(&iVal, 4, 1, stream); - iVal = StrToInt(sgEdit->Cells[sgEdit->Col][i + 1]); - memcpy(buf, &iVal, 4); - FileSeek(iFileHandle, 0x14 + (i * (sgEdit->ColCount - 1) + (sgEdit->Col - 1)) * 4, 0); - FileWrite(iFileHandle, buf, 4); - } - break; - case 1: //浮点值 - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); - //fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][i+1]); - //fwrite(&fVal, 4, 1, stream); - fVal = StrToFloat(sgEdit->Cells[sgEdit->Col][i + 1]); - memcpy(buf, &fVal, 4); - FileSeek(iFileHandle, 0x14 + (i * (sgEdit->ColCount - 1) + (sgEdit->Col - 1)) * 4, 0); - FileWrite(iFileHandle, buf, 4); - } - break; - case 2: //文本 不存 - break; - } - //fclose(stream); - - FileClose(iFileHandle); - ShowMessage("The " + IntToStr(sgEdit->Col) + "Col Write Ok!"); -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btRowClearClick(TObject* Sender) -{ - if (OpenOk == false) return; - - int iFileHandle; //文件句柄 - char Txtbuf[255]; - int iVal; - float fVal; - FILE* stream; - long curpos, length; - DWORD dwRows, dwCols, dwRowLen, dwTextLen; - - DWORD dwTextStartPos; - char* pTextPtr ; - - - if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - == NULL) - { - ShowMessage("Open File Error!"); - return; - } - - curpos = ftell(stream); - fseek(stream, 0L, SEEK_END); - length = ftell(stream); - - for (int i = 1; i < sgEdit->ColCount - 1; i++) - { - switch (thOpen->ColType[i]) - { - case 0: //整型值 sgEdit->Row - //fseek(stream, 0x14+(sgEdit->Row*(sgEdit->ColCount-1)+i)*4, 0); - //iVal=StrToInt(sgEdit->Cells[i+1][sgEdit->Row]); - //fwrite(&iVal, 4, 1, stream); - sgEdit->Cells[i + 1][sgEdit->Row] = "0"; - break; - case 1: //浮点值 - //fseek(stream, 0x14+(sgEdit->Row*(sgEdit->ColCount-1)+i)*4, 0); - //fVal=StrToFloat(sgEdit->Cells[i+1][sgEdit->Row]); - //fwrite(&fVal, 4, 1, stream); - sgEdit->Cells[i + 1][sgEdit->Row] = "0"; - break; - case 2: //文本 不存 - break; - } - } - fclose(stream); -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::btColClearClick(TObject* Sender) -{ - if (OpenOk == false) return; - - int iFileHandle; //文件句柄 - char Txtbuf[255]; - int iVal; - float fVal; - FILE* stream; - long curpos, length; - DWORD dwRows, dwCols, dwRowLen, dwTextLen; - - DWORD dwTextStartPos; - char* pTextPtr ; - - - if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) - == NULL) - { - ShowMessage("Open File Error!"); - return; - } - - curpos = ftell(stream); - fseek(stream, 0L, SEEK_END); - length = ftell(stream); - - - switch (thOpen->ColType[sgEdit->Col]) - { - case 0: //整型值 - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); - //iVal=StrToInt(sgEdit->Cells[ColIndex][i+1]); - //fwrite(&iVal, 4, 1, stream); - sgEdit->Cells[sgEdit->Col][i + 1] = "0"; - } - break; - case 1: //浮点值 - for (int i = 0; i < sgEdit->RowCount - 1; i++) - { - //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); - //fVal=StrToFloat(sgEdit->Cells[ColIndex][i+1]); - //fwrite(&fVal, 4, 1, stream); - sgEdit->Cells[sgEdit->Col][i + 1] = "0"; - } - break; - case 2: //文本 不存 - break; - } - fclose(stream); -} -//--------------------------------------------------------------------------- - -void __fastcall TFrmMain::ToolButton4Click(TObject* Sender) -{ - AnsiString Cmd; - Cmd = "calc.exe"; - WinExec(Cmd.c_str(), SW_SHOWNORMAL); -} -//--------------------------------------------------------------------------- - - diff --git a/contrib/dbcEditer/dbcedit.ddp b/contrib/dbcEditer/dbcedit.ddp deleted file mode 100644 index cdc0ee8c2b54a98895d906932c4351134611c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmZRVaB=ks@bJ`g@pN<#a`e>;@DB=c^Y`)e=VxFz;K0Pl$;KI)SCUzhlbT}4#=r!G E07AM8lK=n! diff --git a/contrib/dbcEditer/dbcedit.dfm b/contrib/dbcEditer/dbcedit.dfm deleted file mode 100644 index 0750c97cd..000000000 --- a/contrib/dbcEditer/dbcedit.dfm +++ /dev/null @@ -1,1259 +0,0 @@ -object FrmMain: TFrmMain - Left = 162 - Top = 122 - Width = 544 - Height = 375 - Caption = 'Dbc Editer v1.4.2 Vendy QQ:11177905' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 33 - Width = 536 - Height = 315 - Align = alClient - Caption = 'Panel1' - TabOrder = 0 - object sgEdit: TStringGrid - Left = 1 - Top = 1 - Width = 534 - Height = 287 - Align = alClient - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goEditing] - PopupMenu = PopupMenu1 - TabOrder = 0 - OnKeyDown = sgEditKeyDown - OnSelectCell = sgEditSelectCell - end - object pnFileName: TPanel - Left = 1 - Top = 288 - Width = 534 - Height = 26 - Align = alBottom - Alignment = taLeftJustify - Caption = 'pnFileName' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - TabOrder = 1 - object lbOpState: TLabel - Left = 444 - Top = 1 - Width = 89 - Height = 24 - Align = alRight - AutoSize = False - Caption = #25171#24320#25991#20214#29366#24577 - end - end - end - object CoolBar1: TCoolBar - Left = 0 - Top = 0 - Width = 536 - Height = 33 - Bands = < - item - Control = ToolBar1 - ImageIndex = -1 - Width = 532 - end> - object ToolBar1: TToolBar - Left = 9 - Top = 0 - Width = 519 - Height = 25 - Caption = 'ToolBar1' - Images = ImageList1 - TabOrder = 0 - object btOpen: TToolButton - Left = 0 - Top = 2 - Caption = 'btOpen' - ImageIndex = 7 - OnClick = btOpenClick - end - object btSave: TToolButton - Left = 23 - Top = 2 - Caption = 'btSave' - Enabled = False - Grouped = True - ImageIndex = 8 - OnClick = btSaveClick - end - object ToolButton2: TToolButton - Left = 46 - Top = 2 - Width = 8 - Caption = 'ToolButton2' - ImageIndex = 10 - Style = tbsSeparator - end - object ToolButton1: TToolButton - Left = 54 - Top = 2 - Caption = 'ToolButton1' - ImageIndex = 9 - OnClick = ToolButton1Click - end - object ToolButton3: TToolButton - Left = 77 - Top = 2 - Caption = 'ToolButton3' - ImageIndex = 10 - OnClick = ToolButton3Click - end - object ToolButton5: TToolButton - Left = 100 - Top = 2 - Width = 8 - Caption = 'ToolButton5' - ImageIndex = 12 - Style = tbsSeparator - end - object ToolButton4: TToolButton - Left = 108 - Top = 2 - Caption = 'ToolButton4' - ImageIndex = 11 - OnClick = ToolButton4Click - end - end - end - object OpenDialog1: TOpenDialog - Filter = '.dbc|*.dbc' - Left = 216 - Top = 96 - end - object PopupMenu1: TPopupMenu - OnPopup = PopupMenu1Popup - Left = 264 - Top = 96 - object N1: TMenuItem - Caption = 'Set Current Col Title' - OnClick = N1Click - end - object N2: TMenuItem - Caption = 'Set Current Col Type' - object btIntType: TMenuItem - Caption = 'INT' - OnClick = btIntTypeClick - end - object btFloatType: TMenuItem - Caption = 'FLOAT' - OnClick = btFloatTypeClick - end - object btTxtType: TMenuItem - Caption = 'TEXT' - OnClick = btTxtTypeClick - end - end - object N4: TMenuItem - Caption = 'Write Current Grid' - OnClick = N4Click - end - object btRowSave: TMenuItem - Caption = 'Write Current Row' - OnClick = btRowSaveClick - end - object btColSave: TMenuItem - Caption = 'Write Current Col' - OnClick = btColSaveClick - end - object btRowClear: TMenuItem - Caption = 'Clear Current Row' - OnClick = btRowClearClick - end - object btColClear: TMenuItem - Caption = 'Clear Current Col' - OnClick = btColClearClick - end - end - object ImageList1: TImageList - Left = 352 - Top = 112 - Bitmap = { - 494C010118001D00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000008000000001002000000000000080 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000008000000080000000800000008000000080000000800000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008000 - 000080000000000000000000000000000000000000000000000000000000FFFF - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF - 000000FF00000000000000000000000000000000000000000000000000000000 - 00000000FF0080808000000000000000000000000000000000000000FF008080 - 8000000000000000000000000000000000000000000000000000800000008000 - 000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008000 - 0000800000008000000000000000000000000000000000000000FFFFFF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF00808080000000000000000000000000000000FF00808080000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 00008000000080000000000000000000000000000000FFFFFF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF00FFFFFF0000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF008080800000000000000000000000FF0080808000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 0000800000008000000080000000000000000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF0080808000000000000000FF008080800000000000000000000000 - 0000000000000000000000000000000000008000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 0000800000008000000080000000000000000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF00808080000000FF00808080000000000000000000000000000000 - 0000000000000000000000000000000000008000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 000080000000800000008000000000000000FFFFFF000000FF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000FF00FFFFFF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF000000FF000000FF000000FF000000FF000000FF000000FF008080 - 8000000000000000000000000000000000008000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 000080000000800000008000000000000000FFFFFF000000FF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000FF00FFFFFF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF0080808000808080008080800080808000808080000000FF008080 - 8000000000000000000000000000000000008000000080000000800000008000 - 0000800000008000000080000000FFFFFF00FFFFFF00FFFFFF00800000008000 - 000080000000800000008000000000000000FFFFFF000000FF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000FF00FFFFFF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF0080808000000000000000000000000000000000000000FF008080 - 8000000000000000000000000000000000000000000080000000800000008000 - 000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000008000 - 0000800000008000000080000000000000000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF00808080000000000000000000000000000000FF000000FF008080 - 8000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000080000000000000000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF000000FF000000FF00000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000FF000000FF000000FF000000FF000000FF00808080000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 00008000000080000000FFFFFF00FFFFFF00FFFFFF0080000000800000008000 - 00008000000080000000000000000000000000000000FFFFFF000000FF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF000000FF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008080800080808000808080008080800080808000000000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 00008000000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000008000 - 0000800000000000000000000000000000000000000000000000FFFFFF000000 - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 00008000000080000000FFFFFF00FFFFFF00FFFFFF0080000000800000008000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000800000008000000080000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000FF000000FF00FFFFFF00FFFFFF00FFFFFF000000FF000000FF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000800000008000000080000000800000008000 - 0000800000008000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000000000000000000000000 - 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF - 000000FF00000000000000000000000000000000000000000000000000000000 - 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF - 000000FF00000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000080000000800000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000008000 - 0000FFFFFF00FFFFFF0080000000800000008000000080000000800000008000 - 00008000000080000000FFFFFF00800000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000008000 - 0000FFFFFF00FFFFFF0080000000800000008000000080000000800000008000 - 0000800000008000000080000000800000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000008000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00800000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000080000000FFFFFF008000 - 000080000000800000008000000080000000800000008000000080000000FFFF - FF00800000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000080000000FFFFFF008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00800000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 00008000000080000000FFFFFF00800000008000000080000000800000008000 - 0000FFFFFF008000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000FF00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000080000000800000008000 - 00008000000080000000800000008000000080000000FFFFFF00800000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 0000C0C0C0008000000080000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008000000080000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000080000000C0C0 - C000800000008000000080000000000000000000000000000000000000000000 - 0000000000000000000000000000800000008000000080000000000000000000 - 0000000000000000000000000000000000000000000000000000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 0000C0C0C0000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000C0C0C0008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000800000008000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C0C0C00000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000080000000C0C0C000800000008000 - 000080000000000000000000000000000000000000000000000080808000C0C0 - C000FFFFFF008080800000000000800000000000000000000000000000000000 - 00000000800000000000000000000000000000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C00000FFFF0000FFFF0000FFFF00C0C0C000C0C0 - C000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF008000000000000000000000000000000000000000000000000000 - 0000C0C0C000C0C0C000C0C0C000FFFFFF008080800080000000800000008000 - 0000000000000000000000000000000000000000000080808000C0C0C000C0C0 - C000C0C0C000FFFFFF0080808000000000000000000000000000000000000000 - 80000000800000000000000000000000000000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000808080008080800080808000C0C0C000C0C0 - C00000000000C0C0C00000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 000080000000800000000000000000000000000000000000000080808000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000FFFFFF0080808000000000000000 - 00000000000000000000000000000000000000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000FFFFFF00000000000000000000000000000080000000 - 8000000080000000800000008000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C0C0C000C0C0C000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000FFFFFF008000000000000000000000000000000000000000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FFFFFF00000000000000 - 00000000000000000000000000000000000000000000C0C0C000FFFFFF00FFFF - 0000C0C0C000C0C0C000C0C0C000000000000000000000000000000000000000 - 80000000800000000000000000000000800000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 0000C0C0C00000000000C0C0C000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 00008000000080000000000000000000000000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 0000000000000000000000000000000000000000000080808000FFFFFF00FFFF - FF00C0C0C000C0C0C00080808000000000000000000000000000000000000000 - 0000000080000000000000000000000080000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000C0C0 - C00000000000C0C0C00000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0080000000000000000000000000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 000000000000000000000000000000000000000000000000000080808000C0C0 - C000C0C0C0008080800000000000000000000000000000000000000000000000 - 000000000000000000000000000000008000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000C0C0C00000000000C0C0C000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0080000000000000000000000000000000C0C0C000FFFFFF00FFFF - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000008000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000000000000000000080000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0080000000000000000000000000000000C0C0C000FFFFFF00FFFF - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C0000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000008000000000000000 - 0000000080000000000000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFF0000FFFF0000C0C0C000C0C0C000C0C0C000C0C0C000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000008000000000000000 - 0000000080000000800000000000000000000000000000000000000000000000 - 000000000000FFFFFF000000000000000000000000000000000000000000FFFF - FF00000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000FFFFFF00800000000000000000000000000000000000000080808000FFFF - FF00FFFFFF00FFFFFF00C0C0C000C0C0C000C0C0C00080808000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000080000000 - 8000000080000000800000008000000000000000000000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF000000000000000000000000000000000080000000800000008000 - 0000800000008000000080000000800000008000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C0000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000080000000800000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000080000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000008080000080 - 8000000000000000000000000000000000000000000000000000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000008080000080 - 8000000000000000000000000000000000000000000000000000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00000000000000 - 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 0000800000000000000000000000000000000000000000000000008080000080 - 8000000000000000000000000000000000000000000000000000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000080808000C0C0C000C0C0C0008080 - 80000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 0000800000000000000000000000000000000000000000000000008080000080 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000000000080808000C0C0C000C0C0C000FFFF00008080 - 80008080800000000000000000000000000000000000FFFFFF00000000000000 - 0000FFFFFF000000000000000000000000000000000000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000008080000080 - 8000008080000080800000808000008080000080800000808000008080000080 - 80000080800000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000C0C0C000C0C0C000C0C0C000C0C0C0008080 - 8000C0C0C00000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 0000800000000000000000000000000000000000000000000000008080000080 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000080800000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000C0C0C000FFFF0000C0C0C000C0C0C0008080 - 8000C0C0C00000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 0000800000000000000000000000000000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF000000000080808000FFFF0000FFFF0000C0C0C0008080 - 80008080800000000000000000000000000000000000FFFFFF00000000000000 - 0000FFFFFF00FFFFFF00FFFFFF0000000000C0C0C00000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 0000800000008000000000000000000000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF000000000080808000C0C0C000C0C0C0008080 - 80000000000000000000000000000000000000000000FFFFFF0000000000C0C0 - C00000000000FFFFFF0000000000C0C0C00000000000C0C0C000000000000000 - 0000000000000000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000008000000080000000000000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000 - 0000C0C0C00000000000C0C0C00000000000C0C0C00000000000C0C0C000C0C0 - C000C0C0C0000000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000800000008000000080000000000000000000 - 0000000000008000000080000000800000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000000808000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000C0C0C00000000000C0C0C00000000000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C00080000000800000000000000000000000000000000000 - 0000000000000000000000000000800000008000000080000000000000000000 - 0000000000008000000080000000800000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C0000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000C0C0C00000000000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C000C0C0C00080000000800000000000000000000000000000000000 - 0000000000000000000000000000800000008000000080000000000000000000 - 0000000000008000000080000000800000000000000000000000008080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C00000000000C0C0C000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000C0C0C000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0C000C0C0 - C000C0C0C0000000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000008000000080000000800000008000 - 0000800000008000000080000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000000000008080000080 - 8000008080000080800000808000008080000080800000808000008080000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000FFFF00000000000080 - 8000008080000080800000808000008080000080800000808000008080000080 - 8000000000000000000000000000000000000000000000000000000000008000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000000000000000000000000000000000000000000FFFFFF0000FFFF000000 - 0000008080000080800000808000008080000080800000808000008080000080 - 8000008080000000000000000000000000000000000000000000000000008000 - 0000000000000000000000000000000000000000000080000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000FFFF00FFFFFF0000FF - FF00000000000080800000808000008080000080800000808000008080000080 - 8000008080000080800000000000000000000000000000000000800000000000 - 0000000000000000000000000000000000000000000000000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000000000000000000000000000000000000000000FFFFFF0000FFFF00FFFF - FF0000FFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000800000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000FFFF00FFFFFF0000FF - FF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00000000000000 - 0000000000000000000000000000000000000000000000000000800000000000 - 0000000000000000000000000000000000000000000000000000800000000000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF000000000000000000000000000000000000000000FFFFFF0000FFFF00FFFF - FF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000008000 - 0000000000000000000000000000000000008000000080000000000000000000 - 0000000000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000FFFF00FFFFFF0000FF - FF00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000008000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008000000080000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000080000000800000008000000080000000800000008000 - 0000800000008000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000000000000000000000800000000000000000000000800000008000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000800000008000000080000000800000008000 - 0000800000008000000080000000800000000000000000000000000000000000 - 0000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000000000000000000000800000000000000080000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000080808000008080008080 - 8000008080008080800080000000FFFFFF000000000000000000000000000000 - 00000000000000000000FFFFFF00800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000000000000000000000800000000000000080000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000080000000FFFFFF0000000000000000000000 - 00000000000000000000FFFFFF00800000000000000000808000808080000080 - 8000808080000080800080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000008000000080000000800000000000000080000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000080808000008080008080 - 8000008080008080800080000000FFFFFF00000000000000000000000000FFFF - FF00800000008000000080000000800000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000800000000000000080000000800000008000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF0000000000000000000000 - 00000000000000000000FFFFFF00800000000000000000808000808080000080 - 8000808080000080800080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF0080000000FFFFFF0080000000000000000000000000000000800000008000 - 0000800000008000000080000000000000000000000000000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000800000000000000080000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF000000 - 000000000000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00800000000000000080808000008080008080 - 8000008080008080800080000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00800000008000000000000000000000000000000000000000800000008000 - 0000800000008000000000000000000000000000000000000000000000000000 - 0000000000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF000000000000000000FFFF - FF00800000008000000080000000800000000000000000808000808080000080 - 8000808080000080800080000000800000008000000080000000800000008000 - 0000800000000000000000000000000000000000000000000000800000008000 - 0000800000000000000000000000000000000000000000000000000000000000 - 0000000000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF000000 - 000000000000000000000000000080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF0080000000FFFFFF0080000000000000000000000080808000008080008080 - 8000008080008080800000808000808080000080800080808000008080008080 - 8000008080000000000000000000000000000000000000000000800000008000 - 0000000000008000000000000000000000000000000000000000000000000000 - 0000000000008000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0080000000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00800000008000000000000000000000000000000000808000808080000000 - 0000000000000000000000000000000000000000000000000000000000008080 - 8000808080000000000000000000000000000000000000000000800000000000 - 0000000000000000000080000000800000000000000000000000000000000000 - 0000800000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF000000 - 000000000000FFFFFF0000000000800000008000000080000000800000008000 - 0000800000000000000000000000000000000000000080808000808080000000 - 0000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000000000008080 - 8000008080000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008000000080000000800000008000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000FFFFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000808000808080000080 - 80000000000000FFFF00000000000000000000FFFF0000000000808080000080 - 8000808080000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000FFFF0000FFFF000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000800000000100010000000000000400000000000000000000 - 000000000000000000000000FFFFFF0000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000FFF7FFFFFC3FFFFFFFFBFFFFE00FF01F - E001FFFFC007E00FE003F3CF8003C007E7F7F39F80018003E7C3F33F00010001 - E7EFF27F00000001E7F7F0FF00000001E7FBF00F00000001E7C3F00F00000001 - E77FF3CF00010001E77FF38F00010001A37FF81F80018003C6BFF83FC003C007 - EDDFFFFFE007E00FFFFFFFFFF01FF01FFFFFFC00FFF7FFF78003FC00FFFBFFFB - 8003FC00E001E0018003FC00E003E0038003E000E7F7E7F78003E000E7DDE707 - 8003E000E7EBE7BF8003E007E7F7E7DF80038007E7EBE70F80038007E75DE7FF - 80038007E77FE5DF8003801FE77FE6BF8003801FA37FA37F8003801FC6BFC6BF - FFFF801FEDDFEDDFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFE1FF3FC0078003 - FFC1FE3F80038003FF83C07F00018003F00780F700018003C00F00E700018003 - 801F00C100008003801F00E600008003000F00F680008003000F81FEC0008003 - 000FC3BFE0018003000FFFB7E0078003801FFFB3F0078003801FFFC1F0038003 - C03FFFF3F803FFFFF0FFFFF7FFFFFFFFFFFFFFFFFFFFFFFFC001000C000FF9FF - 80010008000FF9FF80010001000FF3C780010003000F73C780010003000F27FF - 80010003000F07C780010003000F00C780010003000F01E380010007000403F1 - 8001000F000006388001000F00000E388001000FF8001E388001001FFC003F01 - 8001003FFE047F83FFFF007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFEFFDC007001FFFFFC7FFC007000FFFFFC3FBC0070007EFFFE3F7C0070003 - EF83F1E7C0070001DFC3F8CFC0070000DFE3FC1FC007001FDFD3FE3FC007001F - EF3BFC1FC007001FF0FFF8CFC0078FF1FFFFE1E7C00FFFF9FFFFC3F3C01FFF75 - FFFFC7FDC03FFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFFC00FFFF - F6CFFE008000FFFFF6B7FE000000FFFFF6B7FE000000FFFFF8B780000000FFF7 - FE8F80000001C1F7FE3F80000003C3FBFF7F80000003C7FBFE3F80010003CBFB - FEBF80030003DCF7FC9F80070003FF0FFDDF807F0003FFFFFDDF80FF8007FFFF - FDDF81FFF87FFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 - 000000000000} - end - object Timer1: TTimer - Interval = 300 - OnTimer = Timer1Timer - Left = 440 - Top = 48 - end -end diff --git a/contrib/dbcEditer/dbcedit.h b/contrib/dbcEditer/dbcedit.h deleted file mode 100644 index 2db8d891c..000000000 --- a/contrib/dbcEditer/dbcedit.h +++ /dev/null @@ -1,105 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef dbceditH -#define dbceditH -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "thOpenSource.h" - -union TypePtr -{ - long* l; - DWORD* dw; - WORD* w; - char* c; - void* p; - float* f; - - TypePtr(void* in) : p(in) - { - } -}; - -#define TAG(x) (DWORD)( (((DWORD)x&0x0000ff00)<<8)+(((DWORD)x&0x000000ff)<<24)+(((DWORD)x&0x00ff0000)>>8)+(((DWORD)x&0xff000000)>>24) ) - - -//--------------------------------------------------------------------------- -class TFrmMain : public TForm -{ - __published: // IDE-managed Components - TPanel* Panel1; - TCoolBar* CoolBar1; - TToolBar* ToolBar1; - TToolButton* btOpen; - TToolButton* btSave; - TStringGrid* sgEdit; - TOpenDialog* OpenDialog1; - TPopupMenu* PopupMenu1; - TMenuItem* N1; - TMenuItem* N2; - TMenuItem* btIntType; - TMenuItem* btFloatType; - TMenuItem* btTxtType; - TImageList* ImageList1; - TPanel* pnFileName; - TToolButton* ToolButton1; - TToolButton* ToolButton2; - TTimer* Timer1; - TLabel* lbOpState; - TMenuItem* N4; - TToolButton* ToolButton3; - TMenuItem* btRowSave; - TMenuItem* btColSave; - TMenuItem* btRowClear; - TMenuItem* btColClear; - TToolButton* ToolButton4; - TToolButton* ToolButton5; - void __fastcall btOpenClick(TObject* Sender); - void __fastcall btSaveClick(TObject* Sender); - void __fastcall btIntTypeClick(TObject* Sender); - void __fastcall btFloatTypeClick(TObject* Sender); - void __fastcall PopupMenu1Popup(TObject* Sender); - void __fastcall N1Click(TObject* Sender); - void __fastcall FormDestroy(TObject* Sender); - void __fastcall ToolButton1Click(TObject* Sender); - void __fastcall sgEditKeyDown(TObject* Sender, WORD& Key, - TShiftState Shift); - void __fastcall sgEditSelectCell(TObject* Sender, int ACol, - int ARow, bool& CanSelect); - void __fastcall Timer1Timer(TObject* Sender); - void __fastcall N4Click(TObject* Sender); - void __fastcall btTxtTypeClick(TObject* Sender); - void __fastcall ToolButton3Click(TObject* Sender); - void __fastcall btRowSaveClick(TObject* Sender); - void __fastcall btColSaveClick(TObject* Sender); - void __fastcall btRowClearClick(TObject* Sender); - void __fastcall btColClearClick(TObject* Sender); - void __fastcall ToolButton4Click(TObject* Sender); - private: // User declarations - - - thOpenFile* thOpen; - bool Term; - - public: // User declarations - bool OpenOk; - - AnsiString CurrentOpenFile; - __fastcall TFrmMain(TComponent* Owner); - void SaveToFile(const char* pszFileName); - void __fastcall OpenFileCol(AnsiString FileName, int ColIndex, int ColType); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TFrmMain* FrmMain; -//--------------------------------------------------------------------------- -#endif diff --git a/contrib/dbcEditer/pjDbcEditer.bpr b/contrib/dbcEditer/pjDbcEditer.bpr deleted file mode 100644 index 522df6660..000000000 --- a/contrib/dbcEditer/pjDbcEditer.bpr +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=2052 -CodePage=936 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/contrib/dbcEditer/pjDbcEditer.cpp b/contrib/dbcEditer/pjDbcEditer.cpp deleted file mode 100644 index f36d9ce18..000000000 --- a/contrib/dbcEditer/pjDbcEditer.cpp +++ /dev/null @@ -1,37 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop -//--------------------------------------------------------------------------- -USEFORM("dbcedit.cpp", FrmMain); -USEFORM("TitleFrm.cpp", FrmTitle); -USEFORM("SearchFrm.cpp", FrmSearch); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->CreateForm(__classid(TFrmMain), &FrmMain); - Application->CreateForm(__classid(TFrmTitle), &FrmTitle); - Application->CreateForm(__classid(TFrmSearch), &FrmSearch); - Application->Run(); - } - catch (Exception& exception) - { - Application->ShowException(&exception); - } - catch (...) - { - try - { - throw Exception(""); - } - catch (Exception& exception) - { - Application->ShowException(&exception); - } - } - return 0; -} -//--------------------------------------------------------------------------- diff --git a/contrib/dbcEditer/pjDbcEditer.exe b/contrib/dbcEditer/pjDbcEditer.exe deleted file mode 100644 index 9b11ec74614bcff5ace4ef46dcfd57393ef02ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94720 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