diff --git a/lib/accounts_plugin.sh b/lib/accounts_plugin.sh
new file mode 100755
index 0000000..dae2510
--- /dev/null
+++ b/lib/accounts_plugin.sh
@@ -0,0 +1,152 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./accounts_plugin.sh
+#
+# USAGE:
+# . accounts_plugin.sh
+# OR
+# source accounts_plugin.sh
+#
+# DESCRIPTION:
+# Accounts plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034 ./accounts_plugin.sh
+# - shellcheck -s ksh -e SC2034 ./accounts_plugin.sh
+# - shellcheck -s dash -e SC2034 ./accounts_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_accounts_list
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_accounts_list () {
+ # "943624fd13e27b800cc6d9ce1100c22356ee365c" in iTunes Backup.
+ readonly ACCOUNTS_SQLITE="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "Accounts3.sqlite" )"
+
+ if [ -z "${ACCOUNTS_SQLITE}" ] ; then
+ readonly ACCOUNTS_SOURCE="Accounts3.sqlite not found"
+ error "Accounts3.sqlite not found"
+ readonly ACCOUNTS_LIST="
ERROR: database not found!
"
+ else
+ readonly ACCOUNTS_SOURCE="${ACCOUNTS_SQLITE/${IOS_BACKUP}/\/private\/var}"
+ # * -> don't forget to copy write ahead log!
+ ${BIN_CP} "${ACCOUNTS_SQLITE}"* "${FOLDER}/"
+
+ readonly ACCOUNTS_LIST="$( ${BIN_SQLITE3} -html "${FOLDER}/Accounts3.sqlite" \
+ "SELECT a.Z_PK, \
+ DATETIME(a.ZDATE+978307200, 'unixepoch'), \
+ t.ZACCOUNTTYPEDESCRIPTION, \
+ a.ZUSERNAME \
+ FROM ZACCOUNT AS a, \
+ ZACCOUNTTYPE AS t \
+ WHERE a.ZACCOUNTTYPE=t.Z_PK;" )"
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: accounts_plugin processed.\\n" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+ACCOUNTS_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Accounts
+
Sources
+
+
${ACCOUNTS_SOURCE}
+
+
Information
+
+
+
ID
+
Date
+
Description
+
Username
+
+ ${ACCOUNTS_LIST}
+
+EOF
+)
+
+readonly ACCOUNTS_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: accounts_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/addressbook_plugin.sh b/lib/addressbook_plugin.sh
new file mode 100755
index 0000000..1c04701
--- /dev/null
+++ b/lib/addressbook_plugin.sh
@@ -0,0 +1,158 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./addressbook_plugin.sh
+#
+# USAGE:
+# . addressbook_plugin.sh
+# OR
+# source addressbook_plugin.sh
+#
+# DESCRIPTION:
+# AddressBook plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034 ./AddressBook_plugin.sh
+# - shellcheck -s ksh -e SC2034 ./AddressBook_plugin.sh
+# - shellcheck -s dash -e SC2034 ./AddressBook_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_addressbook_list
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_addressbook_list () {
+ # "8e281be6657d4523710d96341b6f86ba89b56df7" in iTunes Backup.
+ readonly ADDRESSBOOK_SQLITE="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "AddressBook.sqlitedb" )"
+
+ if [ -z "${ADDRESSBOOK_SQLITE}" ] ; then
+ readonly ADDRESSBOOK_SOURCE="AddressBook.sqlitedb not found"
+ error "AddressBook.sqlitedb not found"
+ readonly ADDRESSBOOK_PERSON="
ERROR: database not found!
"
+ else
+ readonly ADDRESSBOOK_SOURCE="${ADDRESSBOOK_SQLITE/${IOS_BACKUP}/\/private\/var}"
+ # Don't forget to copy write ahead log!
+ ${BIN_CP} "${ADDRESSBOOK_SQLITE}"* "${FOLDER}/"
+
+ readonly readonly ADDRESSBOOK_PERSON="$( ${BIN_SQLITE3} -html "${FOLDER}/AddressBook.sqlitedb" \
+ "SELECT
+ person.ROWID,
+ person.First,
+ person.Middle,
+ person.Last,
+ multivalue.value
+ FROM
+ ABPerson AS person,
+ ABMultiValue AS multivalue
+ WHERE
+ multivalue.record_id=person.ROWID;" )"
+
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: addressaook_plugin processed.\\n" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+ADDRESSBOOK_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
AddressBook / Contacts
+
Sources
+
+
${ADDRESSBOOK_SOURCE}
+
+
Contacts
+
+
+
ID
+
First name
+
Middle name
+
Last name
+
Value
+
+ ${ADDRESSBOOK_PERSON}
+
+EOF
+)
+
+readonly ADDRESSBOOK_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: addressaook_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
diff --git a/lib/applications_plugin.sh b/lib/applications_plugin.sh
new file mode 100755
index 0000000..0a6a3d5
--- /dev/null
+++ b/lib/applications_plugin.sh
@@ -0,0 +1,297 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./applications_plugin.sh
+#
+# USAGE:
+# . applications_plugin.sh
+# OR
+# source applications_plugin.sh
+#
+# DESCRIPTION:
+# Applications_plugin plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034 ./applications_plugin.sh
+# - shellcheck -s ksh -e SC2034 ./applications_plugin.sh
+# - shellcheck -s dash -e SC2034 ./applications_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: process_plists
+# DESCRIPTION: ...
+# PARAMETER1 : string (file)
+#===============================================================================
+process_plists () {
+ # Apps are not part of the iTunes Backup!
+ plist_bin2xml "${1}" "/tmp/iTunesMetadata.plist"
+ local APP_ID="$( ${BIN_GREP} --fixed-strings --after-context=1 "softwareVersionBundleId" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ local APP_NAME="$( ${BIN_GREP} --fixed-strings --after-context=1 "bundleDisplayName" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ local APP_VERSION="$( ${BIN_GREP} --fixed-strings --after-context=1 "bundleVersion" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ local APP_DEVELOPER="$( ${BIN_GREP} --fixed-strings --after-context=1 "artistName" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ local APP_PURCHASED="$( ${BIN_GREP} --fixed-strings --after-context=1 "purchaseDate" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ local APP_APPLEID="$( ${BIN_GREP} --fixed-strings --after-context=1 "AppleID" /tmp/iTunesMetadata.plist \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ # In dash, string replacement is not supported
+ # Because in dash, string replacement is not supported we can not use:
+ # echo ${1/${IOS_BACKUP}/\/private\/var}
+ ${BIN_PRINTF} "
\\n" >> /tmp/apps_list.html
+ ${BIN_MV} /tmp/iTunesMetadata.plist "${FOLDER}/${APP_ID}-iTunesMetadata.plist"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: get_applications_list
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_applications_list () {
+ # Default applications visible by a user taken from iOS 10.3.3
+ readonly DEFAULT_APPS_LIST1="
"
+ else
+
+ # Not 100% save but easy! Will break if newlines are in the path to the plist!
+ ${BIN_FIND} "${IOS_BACKUP}"/mobile/Containers/Bundle/Application -name "iTunesMetadata.plist" \
+ | while read -r file ; do process_plists "${file}" ; done
+
+ APPS_SOURCES_HTML="$( ${BIN_CAT} /tmp/apps_sources.html )"
+ ${BIN_RM} /tmp/apps_sources.html
+
+ if [ -z "${APPS_SOURCES_HTML}" ] ; then
+ APPS_SOURCES_HTML="
none
"
+ fi
+
+ readonly APPS_LIST_HTML="$( ${BIN_CAT} /tmp/apps_list.html )"
+ ${BIN_RM} /tmp/apps_list.html
+
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: applications_plugin processed.\\n" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for applications information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+APPLICATIONS_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Applications
+
Preinstalled
+
+
+
+
+
+
+ ${DEFAULT_APPS_LIST1}
+
+
+
+
+
+
+ ${DEFAULT_APPS_LIST2}
+
+
+
+
+
+
+
+
+
+
+ ${DEFAULT_APPS_LIST3}
+
+
+
+
+
+
+ ${DEFAULT_APPS_LIST4}
+
+
+
+
+
+
+
Sources
+
+ ${APPS_SOURCES_HTML}
+
+
Installed by user
+
+
+
AppID
+
Name
+
Version
+
Developer
+
Purchased
+
AppleID
+
+ ${APPS_LIST_HTML}
+
+EOF
+)
+
+readonly APPLICATIONS_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: applications_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/configuration_plugin.sh b/lib/configuration_plugin.sh
new file mode 100755
index 0000000..a0c0a33
--- /dev/null
+++ b/lib/configuration_plugin.sh
@@ -0,0 +1,198 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./configuration_plugin.sh
+#
+# USAGE:
+# . configuration_plugin.sh
+# OR
+# source configuration_plugin.sh
+#
+# DESCRIPTION:
+# Configuration plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e 2034 ./configuration_plugin.sh
+# - shellcheck -s ksh -e 2034 ./configuration_plugin.sh
+# - shellcheck -s dash -e 2034 ./configuration_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_configuration_info
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_configuration_info () {
+ # NOT in iTunes Backup!
+ # There are two data_ark.plist:
+ # - mobile/Library/mad/data_ark.plist
+ # - root/Library/Lockdown/data_ark.plist
+ readonly DATA_ARK_PLIST="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -path "*Lockdown/data_ark.plist" )"
+
+ if [ -z "${DATA_ARK_PLIST}" ] ; then
+ readonly DATA_ARK_SOURCE="data_ark.plist not found"
+ error "data_ark.plist not found"
+ readonly DEVICE_NAME="unknown"
+ readonly TIME_ZONE="unknown"
+ readonly LOCALE="unknown"
+ else
+ readonly DATA_ARK_SOURCE="${DATA_ARK_PLIST/${IOS_BACKUP}/\/private\/var}"
+ plist_bin2xml "${DATA_ARK_PLIST}" "${FOLDER}/data_ark.plist"
+
+ readonly DEVICE_NAME="$( ${BIN_GREP} --fixed-strings --after-context=1 "DeviceName" "${FOLDER}/data_ark.plist" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ readonly TIME_ZONE="$( ${BIN_GREP} --fixed-strings --after-context=1 "TimeZone" "${FOLDER}/data_ark.plist" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+
+ readonly LOCALE="$( ${BIN_GREP} --fixed-strings --after-context=1 "com.apple.international-Locale" "${FOLDER}/data_ark.plist" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ fi
+
+ #--- next source ---
+
+ # "7ddb1ea8c09e5baae5e2d2ecac604a4e4e3087de" in iTunes Backup.
+ LOCK_BACKGROUND="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "LockBackgroundThumbnail.jpg" )" # <- could be modified later!
+
+ if [ -z "${LOCK_BACKGROUND}" ] ; then
+ readonly LOCK_BACKGROUND="LockBackgroundThumbnail.jpg not found"
+ readonly LOCK_BACKGROUND_SOURCE="${LOCK_BACKGROUND}"
+ error "LockBackgroundThumbnail.jpg not found"
+ else
+ readonly LOCK_BACKGROUND_SOURCE="${LOCK_BACKGROUND/${IOS_BACKUP}/\/private\/var}"
+ ${BIN_CP} "${LOCK_BACKGROUND}" "${FOLDER}/"
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: LockBackgroundThumbnail.jpg copied\\n" 1>&2
+ fi
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "DEVICE_NAME: %s\\n" "${DEVICE_NAME}" 1>&2
+ ${BIN_PRINTF} "TIME_ZONE: %s\\n" "${TIME_ZONE}" 1>&2
+ ${BIN_PRINTF} "LOCALE: %s\\n" "${LOCALE}" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+CONFIGURATION_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Configuration
+
+
+
+
Sources
+
+
${DATA_ARK_SOURCE}
+
${LOCK_BACKGROUND_SOURCE}
+
+
Information
+
+
+
Device Name:
+
${DEVICE_NAME}
+
+
+
Time Zone:
+
${TIME_ZONE}
+
+
+
Locale:
+
${LOCALE}
+
+
+
+
+
+
+
Background
+
+
+
+
+EOF
+)
+
+readonly CONFIGURATION_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: configuration_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/functions.sh b/lib/functions.sh
new file mode 100755
index 0000000..834da29
--- /dev/null
+++ b/lib/functions.sh
@@ -0,0 +1,541 @@
+#!/bin/bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./functions.sh
+#
+# USAGE:
+# . functions.sh
+# OR
+# source functions.sh
+#
+# OPTIONS:
+# none
+#
+# EXIT STATES:
+# 101 = uncommon binary not installed
+# 102 = logfile not defined/supplied
+# 103 = dir for logfile not writable
+# 104 = logfile already exists but is not writable
+# 105 = common binary not installed
+# 106 = your os is not supported (yet)
+# 107 = illegal browser command supplied
+# 108 = no case number supplied
+# 109 = folder not defined/supplied
+# 110 = folder already exists
+# 111 = unable to create folder
+# 112 = ios_backup not supplied
+# 113 = ios_backup does not exist
+# 114 = ios_backup is not a directory
+# 115 = ios_backup is empty
+#
+# DESCRIPTION:
+# Global functions (and configuration library) for scripts.
+#
+# REQUIREMENTS:
+# which, uname, basename, ps, grep, awk, sed, dirname, tee, ...
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034,SC2016,SC2027,SC2086 ./functions.sh
+# - shellcheck -s bksh -e SC2034,SC2016,SC2027,SC2086 ./functions.sh
+# - shellcheck -s dash -e SC2034,SC2016,SC2027,SC2086 ./functions.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, I bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# - check if HOLE directory (ios_backup) is read-only
+# - find a more portable solution for [[ in abspath
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+# Relative paths are more portable but less secure.
+# Absolute paths are more secure but less portable.
+readonly BIN_WHICH="/usr/bin/which" # common
+
+readonly BIN_AWK="$( ${BIN_WHICH} "awk" )" # common
+readonly BIN_BASENAME="$( ${BIN_WHICH} "basename" )" # common
+readonly BIN_DIRNAME="$( ${BIN_WHICH} "dirname" )" # common
+readonly BIN_GREP="$( ${BIN_WHICH} "grep" )" # common
+readonly BIN_PS="$( ${BIN_WHICH} "ps" )" # common
+readonly BIN_TEE="$( ${BIN_WHICH} "tee" )" # common
+readonly BIN_UNAME="$( ${BIN_WHICH} "uname" )" # common
+readonly BIN_TR="$( ${BIN_WHICH} "tr" )" # common
+readonly BIN_LS="$( ${BIN_WHICH} "ls" )" # common
+readonly BIN_MKDIR="$( ${BIN_WHICH} "mkdir" )" # common
+readonly BIN_CUT="$( ${BIN_WHICH} "cut" )" # common
+readonly BIN_RM="$( ${BIN_WHICH} "rm" )" # common
+readonly BIN_RMDIR="$( ${BIN_WHICH} "rmdir" )" # common
+readonly BIN_PWD="$( ${BIN_WHICH} "pwd" )" # common
+
+#-------------------------------------------------------------------------------
+# Check existence of uncommon binaries.
+#-------------------------------------------------------------------------------
+#[ -z "${BIN_BC}" ] && error_exit "please install bc and retry" 2
+
+# Changeable defaults:
+DEFAULT_SHELL="bash"
+ECHO_FUNC="display_and_log"
+GET_HELP="no"
+DISABLE_LOGGING="no"
+DISABLE_STDOUT="no"
+GET_VERSION_ONLY="no"
+
+#-------------------------------------------------------------------------------
+# Detect the shell in which we are running and set shell depended vars.
+#-------------------------------------------------------------------------------
+# SC2016: shellcheck fails if awk/sed is used!
+readonly PROCESS="$( ${BIN_BASENAME} "$( ${BIN_PS} -axco pid,command \
+ | ${BIN_GREP} "$$" \
+ | ${BIN_GREP} -v "grep" \
+ | ${BIN_AWK} '{ print $2; }' )" )"
+
+# Why conditinal command should be prefered over test:
+# https://google-styleguide.googlecode.com/svn/trunk/shell.xml#Test,_[_and_[[
+# and why you don't, if you would support "dash":
+# http://mywiki.wooledge.org/Bashism
+if [ "${PROCESS}" = "$( ${BIN_BASENAME} "${0}" )" ] ; then
+ readonly CURRENT_SHELL="${DEFAULT_SHELL}"
+else
+ readonly CURRENT_SHELL="${PROCESS}"
+fi
+
+# Linux can have alle shells and "/bin/echo" has no limitations.
+# Darwin (14.5.0) has bash 3.2.57, zsh 5.0.5, ksh 93 and tcsh 6.17.00
+# - kshs and tcshs builtin echo does not support "-e" and/or "-n"!
+# - "/bin/echo" does not support "-e"!
+# FreeBSD can have all shells, but "/bin/echo" has the same limitations!
+# Solution: use printf instead!
+# Worth readable Link: http://hyperpolyglot.org/unix-shells#echo-note
+if [ "${CURRENT_SHELL}" = "zsh" ] ; then
+ # zsh does not split a string into words separated by spaces by default!
+ setopt shwordsplit
+ # zshs "which" find the builtin without "-p"!
+ readonly BIN_PRINTF="$( which -p printf )"
+else
+ readonly BIN_PRINTF="$( which printf )"
+fi
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "CURRENT_SHELL: %s\\n" "${CURRENT_SHELL}" 1>&2
+fi
+
+#-------------------------------------------------------------------------------
+# Detect operating system name and set os depended vars.
+# (eg. "sed -E" on macOS is the same as "sed -r" on Linux)
+#-------------------------------------------------------------------------------
+readonly OS_NAME="$( ${BIN_UNAME} -s )"
+
+case "${OS_NAME}" in
+ Darwin) readonly BIN_ID="$( ${BIN_WHICH} "id" )" # common
+ readonly BIN_OPEN="$( ${BIN_WHICH} "open" )" # common
+ readonly SED_EXT_REGEXP="-E"
+ readonly DARWIN_FIND_REGEXP_TYPE="-E "
+ readonly DATE_DISPLAY="-j -f %s "
+ ;;
+ Linux) readonly BIN_GETENT="$( ${BIN_WHICH} "getent" )" # common
+ readonly SED_EXT_REGEXP="--regexp-extended"
+ readonly DATE_DISPLAY="-d @"
+ ;;
+ FreeBSD) readonly BIN_GETENT="$( ${BIN_WHICH} "getent" )" # common
+ readonly SED_EXT_REGEXP="-E"
+ readonly DATE_DISPLAY="-j -f %s "
+ readonly LINUX_FIND_REGEXP_TYPE="-regextype posix-extended "
+ ;;
+esac
+
+if [ "${DEBUG}" = "on" ] ; then
+ # printf has to be assinged before!
+ ${BIN_PRINTF} "OS_NAME: %s\\n" "${OS_NAME}" 1>&2
+fi
+
+#=== FUNCTION ==================================================================
+# NAME: check_logfile
+# DESCRIPTION: Checks if a logfile is set and can be created.
+# (needed in "log" and "display_and_log"!)
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+# Do not use "function" if you want to support dash:
+# http://mywiki.wooledge.org/Bashism
+check_logfile () {
+ if [ -z "${LOG_FILE}" ] ; then
+ # "error_exit" will be defined later!
+ ${BIN_PRINTF} "\\033[01;31;40mERROR: logfile not defined/supplied... EXIT!!!\\033[00m\\n"
+ exit 102
+ fi
+ if ! [ -w "$( ${BIN_DIRNAME} "${LOG_FILE}" )" ] ; then
+ ${BIN_PRINTF} "\\033[01;31;40mERROR: dir for logfile not writable... EXIT!!!\\033[00m\\n"
+ exit 103
+ fi
+
+ if [ -e "${LOG_FILE}" ] ; then
+ if ! [ -w "${LOG_FILE}" ] ; then
+ ${BIN_PRINTF} "\\033[01;31;40mERROR: logfile already exists but is not writable... EXIT!!!\\033[00m\\n"
+ exit 104
+ else
+ ${BIN_PRINTF} "\\nlogfile does already exist, overwrite? \
+(type YES in UPPER letters and hit return!) : "
+ read -r answer
+ if [ "${answer}" != "YES" ] ; then
+ ${BIN_PRINTF} "\\033[01;34;40mHINT: move the old logfile to a save place and try again... EXIT!!!\\033[00m\\n"
+ exit 0
+ fi
+ # clear logfile
+ ${BIN_PRINTF} "" > "${LOG_FILE}"
+ fi
+ fi
+}
+
+#=== FUNCTION ==================================================================
+# NAME: display
+# DESCRIPTION: Wrapper for "echo -n -e".
+# PARAMETER 1: message (string)
+#===============================================================================
+display () {
+ ${BIN_PRINTF} "${1}"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: log
+# DESCRIPTION: Wrapper for "echo -n -e" incl. redirection into logfile.
+# PARAMETER 1: message (string)
+#===============================================================================
+log () {
+ ${BIN_PRINTF} "${1}" >> "${LOG_FILE}"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: display_and_log
+# DESCRIPTION: Wrapper for "echo -n -e" incl. output to stdout AND redirection
+# into logfile.
+# PARAMETER 1: message (string)
+#===============================================================================
+display_and_log () {
+ ${BIN_PRINTF} "${1}" | ${BIN_TEE} -a "${LOG_FILE}"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: quiet
+# DESCRIPTION: Wrapper for "echo -n -e" incl. redirection into "nirvana".
+# PARAMETER 1: message (string)
+#===============================================================================
+quiet () {
+ ${BIN_PRINTF} "${1}" > /dev/null
+}
+
+#=== FUNCTION ==================================================================
+# NAME: error
+# DESCRIPTION: Display red error messages starting with "ERROR:".
+# PARAMETER 1: message (string)
+#===============================================================================
+error () {
+ # TODO: stderr too!?
+ "${ECHO_FUNC}" "\\033[01;31;40mERROR: ${1}!!!\\033[00m\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: error_exit
+# DESCRIPTION: Display red error messages surrounded by "ERROR:" and "EXIT!!!".
+# PARAMETER 1: message (string)
+# PARAMETER 2: exit state (integer)
+# PARAMETER 3: command (optional)
+#===============================================================================
+error_exit () {
+ "${BIN_PRINTF}" "\\n\\033[01;31;40mERROR: ${1}... EXIT!!!\\033[00m\\n\\n"
+
+ # Execute command/function before exit
+ if [ -n "${3}" ] ; then
+ ${3}
+ fi
+
+ # Clean up before exit
+ ${BIN_RM} "${LOG_FILE}"
+ ${BIN_RMDIR} "${FOLDER}"
+
+ if ! [ "${2}" -eq "${2}" ] 2> /dev/null ; then
+ exit "${2}"
+ else
+ exit 1
+ fi
+}
+
+#=== FUNCTION ==================================================================
+# NAME: hint
+# DESCRIPTION: Display blue hint messages starting with "HINT:".
+# PARAMETER 1: message (string)
+#===============================================================================
+hint () {
+ "${ECHO_FUNC}" "\\033[01;34;40m${1}\\033[00m\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: success
+# DESCRIPTION: Display green success messages starting with "SUCCESS:".
+# PARAMETER 1: message (string)
+#===============================================================================
+success () {
+ "${ECHO_FUNC}" "\\033[01;32;40mSUCCESS: ${1}!\\033[00m\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: assign_binary
+# DESCRIPTION: check if binary exists and store the absolute path in a var.
+# PARAMETER 1: command (string)
+#===============================================================================
+assign_binary () {
+ # Because in dash, string indexing is not supported we can not use:
+ # "${1:0:1}" = "/"
+ if [ "$( ${BIN_PRINTF} "${1}" | ${BIN_CUT} -c 1 )" = "/" ] ; then
+ # Absolute paths are more secure but less portable.
+ if ! [ -e "${1}" ] ; then
+ error_exit "${1} not installed" 105
+ fi
+ local var="BIN_$( ${BIN_PRINTF} "$( ${BIN_BASENAME} "${1}" )" \
+ | ${BIN_TR} "[[:lower:]]" "[[:upper:]]" \
+ | ${BIN_TR} -d '.' )"
+ eval "readonly $var=\${1}"
+ else
+ # Relative paths are more portable but less secure.
+ local var="BIN_$( ${BIN_PRINTF} "${1}" \
+ | ${BIN_TR} "[[:lower:]]" "[[:upper:]]" \
+ | ${BIN_TR} -d '.' )"
+ # SC2027 & SC2086: It's not a bug... it's a feature!
+ eval "readonly $var=\$( ${BIN_WHICH} "${1}" )"
+ if [ -z "$( eval "${BIN_PRINTF} \$$var" )" ] ; then
+ error_exit "${1} not installed" 105
+ fi
+ fi
+}
+
+#=== FUNCTION ==================================================================
+# NAME: check_browser
+# DESCRIPTION: Check for browser (default: firefox) and store in var.
+# (If no Desktop Environment is installed, try "true" as "a browser".)
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+check_browser () {
+ if [ -z "${BROWSER}" ] ; then
+ case "${OS_NAME}" in
+ Darwin) readonly BROWSER="Firefox"
+ ;;
+ Linux|FreeBSD) BROWSER="firefox"
+ ;;
+ *) error_exit "your os is not supported (yet)" 106
+ ;;
+ esac
+ fi
+
+ case "${OS_NAME}" in
+ Darwin) if ! [ -d "/Applications/${BROWSER}.app" ] ; then
+ error_exit "illegal browser command (${BROWSER}) supplied" 107
+ fi
+ ;;
+ Linux|FreeBSD) readonly BROWSER="$( ${BIN_WHICH} "${BROWSER}" )"
+ if ! [ -x "${BROWSER}" ] ; then
+ error_exit "illegal browser command (${BROWSER}) supplied" 107
+ fi
+ ;;
+ esac
+
+ hint "Defined/supplied browser:\\n ${BROWSER}\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: check_case_number
+# DESCRIPTION: Check if case number is given and store in var.
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+check_case_number () {
+ if [ -z "${CASE_NUMBER}" ] ; then
+ ${BIN_PRINTF} "\\nNo case number supplied but mandatory - type case numer in and hit return: "
+ read -r case_number
+ if [ -n "${case_number}" ] ; then
+ readonly CASE_NUMBER="${case_number}"
+ ${BIN_PRINTF} "\\n"
+ else
+ error_exit "no case number supplied" 108 usage
+ fi
+ fi
+
+ hint "Supplied case number:\\n ${CASE_NUMBER}\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: abspath
+# DESCRIPTION: generate absolute path from relative path
+# PARAMETERS 1: string (relative or absolute path to directory or file)
+# SOURCE:
+# https://stackoverflow.com/questions/3915040/bash-fish-command-to-print-absolute-path-to-a-file#23002317
+#===============================================================================
+abspath () {
+ if [ -d "${1}" ]; then
+ # dir
+ ( cd "${1}"; ${BIN_PWD} )
+ elif [ -f "${1}" ]; then
+ # file
+ if [[ ${1} = /* ]]; then
+ echo "${1}"
+ elif [[ ${1} == */* ]]; then
+ echo "$( cd "${1%/*}"; ${BIN_PWD} )/${1##*/}"
+ else
+ echo "$( ${BIN_PWD} )/${1}"
+ fi
+ fi
+}
+
+#=== FUNCTION ==================================================================
+# NAME: check_folder
+# DESCRIPTION: Check if folder does not exist, could be created in the given
+# location and store in var.
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+check_folder () {
+ if [ -z "${FOLDER}" ] ; then
+ error_exit "folder not defined/supplied" 109 usage
+ fi
+
+ if [ -d "${FOLDER}" ] ; then
+ # I prefer to check for an existing report folder from a previous call
+ # over "just" check if the folder is empty.
+ error_exit "directory (${FOLDER}) already exists" 110
+ fi
+
+ if ! [ -w "$( ${BIN_DIRNAME} "${FOLDER}" )" ] ; then
+ error_exit "unable to create directory (${FOLDER})" 111
+ fi
+
+ # Create folder before abspath
+ ${BIN_MKDIR} "${FOLDER}"
+ # because abspath checks for existence!
+ readonly FOLDER="$( abspath "${FOLDER}" )"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: check_officer
+# DESCRIPTION: Check if name of officer is given otherwise use
+# /etc/passwd or OpenDirectory.
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+check_officer () {
+ if [ -z "${OFFICER}" ] ; then
+ case "${OS_NAME}" in
+ Darwin) OFFICER="$( ${BIN_ID} -F )"
+ ;;
+ Linux|FreeBSD) OFFICER="$( ${BIN_GETENT} passwd "${LOGNAME}" \
+ | cut -d ":" -f 5 | cut -d "," -f 1 )"
+ ;;
+ esac
+ # Sometimes the system don't know the fullname of the user.
+ # The default in Bash on Ubuntu on Windows 10 is "".
+ if [ -z "${OFFICER}" ] || [ "${OFFICER}" = "\"\"" ] ; then
+ readonly OFFICER="unknown"
+ fi
+ fi
+
+ hint "Guessed/supplied officers name:\\n ${OFFICER}\\n"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: remove_final_dashes
+# DESCRIPTION: Check if ios_backup has one or more final dash(es) and
+# remove them.
+# PARAMETER 1: string (eg. path to source)
+#===============================================================================
+remove_final_dashes () {
+ # Because in dash, string indexing is not supported we can not use:
+ # "${STRING:(-1)}" = "/" and STRING="${STRING:0:(-1)}"
+ local STRING="${1}"
+ local LENGTH="${#STRING}"
+ while [ "$( ${BIN_PRINTF} "${STRING}" | ${BIN_CUT} -c "${LENGTH}" )" = "/" ] ; do
+ STRING="$( ${BIN_PRINTF} "${STRING}" | ${BIN_CUT} -c 1-$(( LENGTH - 1 )) )"
+ LENGTH="$(( LENGTH - 1 ))"
+ done
+ ${BIN_PRINTF} "%s\\n" "${STRING}"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: check_source
+# DESCRIPTION: Check if ios_backup is given and store in var.
+# Otherwise EXIT!
+# PARAMETERS: none (a global var will be used.)
+#===============================================================================
+check_source () {
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "SOURCE: ${1}\\n" 1>&2
+ fi
+
+ if [ -z "${1}" ] ; then
+ error_exit "ios_backup not supplied" 112 usage
+ fi
+
+ if ! [ -e "${1}" ] ; then
+ error_exit "ios_backup (${1}) does not exist" 113
+ fi
+
+ if ! [ -d "${1}" ] ; then
+ error_exit "ios_backup (${1}) is not a directory" 114
+ fi
+
+ if [ -z "$( ${BIN_LS} "${1}" )" ] ; then
+ error_exit "ios_backup (${1}) is empty" 115
+ fi
+
+ # TODO: check if hole directory is read-only
+
+ IOS_BACKUP="$( remove_final_dashes "${1}" )"
+ readonly IOS_BACKUP="$( abspath "${IOS_BACKUP}" )"
+
+ hint "Supplied iOS backup folder:\\n ${IOS_BACKUP}\\n"
+}
+
+readonly FUNCTIONS_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: functions.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/hardware_plugin.sh b/lib/hardware_plugin.sh
new file mode 100755
index 0000000..a2137fa
--- /dev/null
+++ b/lib/hardware_plugin.sh
@@ -0,0 +1,269 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./hardware_plugin.sh
+#
+# USAGE:
+# . hardware_plugin.sh
+# OR
+# source hardware_plugin.sh
+#
+# DESCRIPTION:
+# Haredware plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034,SC2016 ./hardware_plugin.sh
+# - shellcheck -s ksh -e SC2034,SC2016 ./hardware_plugin.sh
+# - shellcheck -s dash -e SC2034,SC2016 ./hardware_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.1
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-05
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# - Capacity
+# - Carrier
+# - Bluethooth MAC
+# - IMEI
+# - ICCID
+# - Modem Firmware
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+# 1.1 - P. N. - added network plugin
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#-------------------------------------------------------------------------------
+# iPhone images.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+readonly IPHONE_BASE64="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"
+readonly IPHONE3G_BASE64="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"
+readonly IPHONE3GS_BASE64="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"
+readonly IPHONE4_BASE64="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"
+readonly IPHONE4S_BASE64="/9j/4AAQSkZJRgABAQEASABIAAD/2wBDABgREhUSDxgVFBUbGhgdJDwnJCEhJEo1OCw8WE1cW1ZNVVNhbYt2YWeDaFNVeaV6g4+UnJ2cXnSrt6mXtYuZnJX/2wBDARobGyQgJEcnJ0eVZFVklZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZX/wgARCADwAH4DAREAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAECAwUEBv/EABgBAQEBAQEAAAAAAAAAAAAAAAABAgME/9oADAMBAAIQAxAAAAHVEcxEAAYAIALDoAiefOYAADoNIAABAaRxGCAAMBmmTAAAiaBxmKAATEWlx0EgABHecZjAAAAF53AAAI0TlMZLEBBREhnarACRUukchmM6GsIiMBgWzUwGByTWivIZyacx0Nc7LdozT1iyc3x6z780tK3JnmkvKZqd/LjfbzydvXslEqmK+Hbo9HOtai84DUXiOFNOSMjtdoAxEwEMz11TlM470aiTlYFmUN2SFzLNWpmTWscpnGpc06xCat57SNbcafTIQ6c7PJ2r9fHPx02DlM41WYawpoztwqllLRBvm7CazM72TlM41CMSpJFZoEVkjlcFmVbtHKZxo4sSVj06CgiXnOPnurGbd4zumts5TONnmtlq1OXa4pKjtOIs68o8+t/LeX0xuHKZxpIlaCxJIEVkgRWZlG6cxmmhmkrss3LCuHc2FRGamVmWbpzGYdmNqJakui22qQ1xtuappc+lRYcBvHMZZ3w5ouY6tiwR3lJINPO4EzON45jLO5ErQEskSgIAomeu+cxlGjnM85r1p9JZZXNCWWV51PG3LGzL1N85jJO/nxvOct9Gu7nvh3iGs2xVUvJ7a86s1yzO3P0BzGSd/PnZmR3q3pXrnXNJJazDO48fTPFWueb1z6A5jILUaoYxANIgrFFNegOcxgAAAAAAAAPQnOYwAACGIYAAAehKTEAAAZeM5xAAAeiJnnisAACQEQAAOk3hlZwkQAYAAABM7iR//8QAJxAAAQMCBgMBAQEBAQAAAAAAAQACAxEzBBITFCEyECAxIkEwI0L/2gAIAQEAAQUCRNEcRGFuY1uY1uY1uY1uGLXatdi3DVuGrcNQmjPkmgllMh9YTR/r9THaZWKdSP3zt9nctjNY8X09K8A0OomftAU9T8htYvr7xGjvU/IrWL6AVWmVkKyLIshWmUI3KioqKiyFFRWsX0i5fkqjGtNaa01kWRBnGVZVkVKJ/wBitYvrDcbycqP0NcVXktITUJBnKzZW6jkTUSdorWLtwXPj9QL+x9fssiHzJ+l9bQ0/knaK1i/mHuUCoFT2HiniXvFaxfTD3Xvyouo8O/SofACJaCKekveK1i+mHu5QUWgKMUJVSmr/AM5Q5GgBPNQh9muRWsXbw92tEUAjVVQr4qq19JrkVrF28PdNFUIIkBZmocoqoQXHma7FaxdvD3TFnO3Qj00O6N2maT8KmWTgPDsyaama7FaxdvD3G/E9Zg1+qxZg6Qyac2tHRr9SU0zxnn+zXYrWLtwXPJAVB4IVAgPFB4muxW8XbguEr9IFBUCKCoEfSa7FbxduG45f0IVzVNK/sVzVVf251BXhpqpbkVvF24e9CRzXxV3mrvAqsnNVLcit4u3F3/0k7xW8Xbj7NAKyhOoE0AjK1OACaARlanUCY0EERhPaGp/eK3i7bOzSWkguJqo+HVT+XDhHlOTahGif8f2it4u2zsFz4DuFVV8E+BUJzqp3aK1i7YNDqFapWqVqlazlqlapWs5apWqVquWoUTUw2sXb/wBobWLt+3FD7w2sUP8Al6hUVEfvrFbc3M17Cx3rmIRJPtDGXu8OYHo4ULarararararararararapuGAIAaF//EACYRAAICAQQBBAIDAAAAAAAAAAABAhESECAhMTADE0BBMmBCUWH/2gAIAQMBAT8B/UrLLMiyyyyy9zLZzpycnJbF4HpWkJJIzR6jUhd0VotHtk6ke6iDt7Lp2Zx7O34Gk+zCJSXXxEil/elnIntZYnr9ERq9G6ZmiPe1owEq042yjZiyMa81fAX4kxeZpXyel9kvipFD80dGLooZJ8mX0RfPhyLE6LG7JQyMP9Iwx+Q2ZCdjlRkJ2OVGQmJGI1tk6kU30Q7P56L8mT7LxR6fZ6a40ntlGzAjGhqz2yEaJxtntshGiE6RmiTv9j//xAAkEQACAgICAgICAwAAAAAAAAAAAQIREjEQICEwA0ATYCJBQv/aAAgBAgEBPwH9Uoor1r6L2UIZQicsY2Jy2J2r9E5VI/KiDt9JLKNGM9C8KvQ0mYoSr6N8Jk5YoVvXFFoa7vlHyRTIPFUj+7EriYSslrtY3xXEla8cp0ZDd+/JF9Wyxd2/5FUR31lviPeN4+D5vDRHf1WyxdEihr0PfC2LXDI6KJa9FFCQmWNilRkOV/YbMhOxKzEaoSsxGhsyE76ydMq9ENn+eHohoqyeiey2fG/PWUbMGRjQmZDdilRmSdko2P42Qjj+x//EACoQAAEDAwMDBAEFAAAAAAAAAAABEBECITEgQXEwMuESQGGhsSJRYoGR/9oACAEBAAY/Ai5kyZMmW3N9Hc8nxq51/wAfw3PQzqUReh2oba6ePYU8ewp4fKm7bm5lTKm+lSngloaCxE0yXb0tJNhFFKeHkwKrKq4TAhY9UXaCCBSnjRuWbNT5qfdlKeBGwIkWX/RaV2LGzxclNClPDyTvpxLJoUp4fBh+wu2FfDKU8aMtc7n7tKlPDzJ3fRMyLw39NCwR8HqXZ1KeNSydyEp+xK4VCfUgq7QfqwKylPGjDYMPhsGDApTxo26OGUp41wK0Q9luylPGiYMNj7bB5axPp+2Up466lPGq7WLtYuXUsKU8aJTozu9PGjDRBh8P2vTw+EbCGEbCGEbCGEbCNTx7CnoSvQp49ghBC9X4e6FvyeTyeTyeTyeTyeTyXLN//8QAJhAAAgECBQUBAQEBAAAAAAAAAAERITEQQWFxoSBRgbHw4ZEwwf/aAAgBAQABPyEQktBkHpkgT7NvwfZH0Q8hP+M3P4zc/jLKnmhfBb2yH2uldVF2dTSSGpGLUy9MFDV+lGClNNZCck4iaaldKwtDXpFvpyIKxE4CCOiRoKWF03Njhv8AHovfqubHHFskQUJGq5LuiXdCc4WHITW4pKSZMn3E2xSmjih6ELDWBtcwY2riOcke+CfcCbI4oinueZ5EqJaKUHFC0i1sNAlJId2NU10VFlGop6cipd6Y6iBsHINbIjqo7CVmeF4otblSbFYg8hmKW7dnsEmgOGP+iwI5tJZFO1CrgcNShqRsztsMVE7Bz4o0/JZ2Y8yfBWC1PJVWbWxL/QiXm9yqd2tiszyEs23uNYCWF4rDWNmOtR9xtS5OQc1i1JjbmIeTVKbmHAhqWykDbDMql4qUi78YOGOfFFssbMuSqPGlO6SZhQTVUUCV2TDOp2HVS1sxIRZjBQmR3gPFFosbMVqoqzFSxUpa7RsbSLRJ0E2lF5JqhWKHiSXFwtow/FFosbMZLtI0f9GTs0y4IPox0kppjJXaR8GQdnI2jhuJHS75FheILRY2Y605WJlOzVLHepUVY42KW2iWN2SsOLpNHQSMR0ckUjg1nPBK0jC8QWtyzsz3YWoUiJSlE4FItlQUkHJSPDJ8e4QUma2CHRhEqzD8QW9y3sxqpC7v6JDF5YdJKygQ7qcLANJ3wRJK2D8Z6Le5b2ZC0uS2fQa5TyIM2hlkRd8KKsSRSRNcDxnot7lrYk2ouaG7a3L34oPLW6oZpWLQNnWoNZeXJOzmNm1ZoOU1qRTNmqRtTw/Gei3uWdhuIWlGJLndxzMuHkzsOzKBnaBJuWpFJqLBpq6gaUVLsRVRsWzdcBxnot7lvqWdbHnr3GeizuWxRWTdFggmEjc/pEMTAbgqExMmZeSe0ihPBOM9FnfCSGsih1piO4eRNM2NyFboeZOm70KiU03EbcIZME7bVaiJtC6cZ6LO5ZHyiSh3k6QROyNDp2+RhSyKrOaUCluFWS1FIogvHEeizuVrCNNc4gGgucYzQX9eIB9SyYJBnAD0rXrn/B5g7FjfqYlcLxQRUamvXwBNLt1XCohqTZCQ09RIW+wpz5jl4H1KwZdH1Lbim4lCjBVExID79R9+o+/UR+/JH78EfvwR+/BH78EfvwR+/BLKvJGEjD//2gAMAwEAAgADAAAAEAAAAJJJABJJJAAAABJIAAJJAJJIJJAAAJJJJJJJAAe3e3tm4Byc7bryWAr+tchlmJxsw/x+6JW370H74BKLabD2wBBa/wDpI+CT33/tUiSSaWGytMCRWygSZ8SRhiySOoSSyyUg+CQD1UtvyQQTmfr/AIkgEIPwPkkAAMJhgJFgknlQpT6AkIsbXAxgkaiRaSyggIgABtCkEkkgEkkAEkkggkkEEkkgEkkEEkkkEkkkAkgAAAAA/8QAJBEAAwACAgEEAgMAAAAAAAAAAAERITEQIEEwQFFgYXGRseH/2gAIAQMBAT8Q+otxUkkkgntCl6PEUL8CsTbSP0G03wM4VlZWVi1zqLcIPMJNo/A/5EiiFpNNDUcNC8Frl6JzGnQ9zYuGVMYsMlbGLhi5ZpB+BC1HSEXqJKVmBpSoofIiGl4dHDhIsKdWaLHMeuT5liFPWaURJY5j1utBs/I/YTxODYnCjGtUzHKOzfWEZO6Z6Gmt9kyjfD65MqZtQq9Vw+H1csZJkXFfaoao0ExRIg1BuFE76EzI7TVCiNixIhBFwKN6CeIaNQdKcL9eAtrS5ArK+4i5y1k56yCd6KuFVeMOshjdoukxvAqHB1gSxLf9f6NQl2NQVRTrRRMtM2OM/JYGW26NsmYtlbbYhyaG7S7KdoQhfqv/xAAiEQADAAICAgIDAQAAAAAAAAAAAREhMRAgMFFhcUBBYJH/2gAIAQIBAT8Q/kVkhOghCEIQnTYiMGDBgiIhrpB8rZlHF42hW2UK0OYYrfFGQQ+UMU0NGh7Wx8IWFK3whElOL22CPjEaL8FtYisY3GXGtkFSoynGKlTPKQ6oSTFSHspsJa9+z0QSu+yghPiCROqYpKDWShKD5bEEiaEW9tSrwNpbPlEj11k+D192JcYHbQ9btU2729osD+SanaeHfZlgm9jZgkQahRUggr4iNBEItixIRf7PZsVJfA8qfcg6QPqUHJD6jvyD04iuNFeempCIKkXCu2gsbPRsQlmRmsQt2r0aGO0VoLN1oqEjTNxkBP8AvjSThFC+pjH7M5t+acT+T//EACgQAQACAQMDBAIDAQEAAAAAAAEAESExQVFhcfCRobHREIEgweHxMP/aAAgBAQABPxCLgAzbGaUemfieAfqeIfqeMZ5xlriuEzp+v9Tpev8AUs+5+qdDzdJy0PLaMAB4+yCCxv8ADIgC8zIQD/0/lXLQeraXLly5cYCDsly2xeC3bb9fEGy463aAh2v2f42q6a5lXHbVqyVEbLpckEII6Iy5cuXAS3Uu67G7Kj7o/X8W++3blNVTZlP8Y0hapM5sHu5cuXLj9dPBcE0Ox8/+GZODX72ly5cuXF66eS4JXq39RqiHeIhVTgaczHoGrr85gBBVoIndmmvpf9Q4YpQ8/UQwlJc6hOoQRoFwGxZyQrWoM81wTUBjNb+YlYtgtnaZGnb2f6gYvWT/ACUVYvc+oLonb/kCIjj0/wAiZMvXTzePKQcG0YiYNZNvSV1P7Mo6X7Qp29I1Ab0hzy0avaea4IJiW49P+y9xsl9I6CwvO0aaLeY10Qw2h0tEAOnQtcokh0rmGW67mqF3V9YWDeUUu2nMaYWZx27zQQyI67X9TzXBHjggnS3xLBXfXeHG49CPkkaipCU2x6QvANphXKPYivuMphtovFd5bLWZLnobxA3N0q5eJvK3mFjUMsIFki7qH9TzXBE0KVR3ZcQWXhUc4Wi2iiCVg5ik1LlUy7XnmWsXrO2agtcqubIHfn0lxkTdZqWtt/qAeggjfzHR9D4niuCe8f6nkOIoYmkLSnSK4AsCfsPPaXOFHRJwl4Yh0aDIuNP9TN91XZG9DNBccW4CrJVwNkUvHaNqUdVKAun1ImCr7wmjSj4niuCe/wDqeQ4lamlw7kIpTFFb+4BaCXQ69YmdOwfSPGiabt12xK3IHAdYUFOi5u3vBRi9Vrb1gLmSJa143jlekwA0o+CeK4J7n6nkOIwbrNlRLtnU3DbMGK7cA1dbPSDu7zw2mCxGLbalqjdtiYFCtqIohoGcwFaGuk0mMxBnH7IvY+CeC4J7r6nkOJQ3m1tfiuT5lG5Vpt0tqdH6ospu43KO8esDxRYRYuVMABWi2rlNj3iqYR7Nx+z8E8NwT3X1PIcSga9mX9zw/wCoqLiMK94xdSYC6zmA1afofUocAtGsW2zUGNU1eaC/X0ludJQIHtt6SzVqK8XWveIw7GmHGdogEA0pszQAAABpH7XwTw3B+E8RxHkb/SFxYd70jvmsvWGcXqso4Ng0u2VooVNTK35zEtPo0c9q1glAm+q9+usRzDNjdihRKxRw1BOxmfE+CeG4PwHmOIaFL/GK4D6y50vrDqmQKBwwx2HmsQjgDsTfj9yhxj3m1H7nwPgnjOH4DDwMRzKB1RdcbkaJYm1r+YxUulIVflRtSWrguWGBPFsC4VySthatBcw4C+7NtpukgLL3wFaxpcKq9H7muDZ20Zn+r4J4zh+Ax7j4mZXDAXn0hVrVUC8uFVGltjqQlNPMpYC0tzUyTerFa3n0mugAY0Xdl6UCwvoaiytOLV3/ANl1VAMaLRb63Aftw3xpEAC35cyqGlDQoamf6vgniOH4TDvPiMDN6qE8qbBxW2G7M0Vlt/ktxAveoAUgw7ILa7DDNCLrmpb0EjCQ5/W7lnoFr0YB3M3YJ8QuFE5bo/VTP9fwTxHD8Iq7D8RplEKI0yjpAVgKYOZhTDPtGrtz1ghpFGFDZh5IITL9fwTxHCe2xV2mWq5ugIiogTrBE3OEYsS11Q/hAUOcIxUjd0Aygtw7xSWlqmL9coBqJ0Lgs+kYRpaRjtO3xPMcJ7bFRejCoEV1FmqdrVdEiOotVSrs1fEzxj5HLKxNTTpBchRKFhgLjrsBS7B16y2zjLb/AJHbrW8Rk1m3LmiO42YrXt8TzHCe2w+7HcMzjNQuAL0Y5cHWFYCvLpDq082QfHvLG+8GahYJib1lj1M5tiqBoU7yhVAbEo4I6wUfDPIcJ7bFAgpswLT3vuBlHrfaK6+99wMrF+/uYqx9/tFf9/uAae99zyD+4vr733AdPe+50jw6x1nvfcZkBdieA4IApLcTn+aDf0gjo/zBSHEx2J5Xb+SohswYCAGCGjqQbP5CvIwRHBdx9z+SNejCKEXeYiroCWSabfxdIhSkJCNsFQY2r7h/IqsHCXBaZONP5K7JtJh6QAGgV+KqB1jk0rYsf0zqD1z+nrn9PXPWh1pdaXWl1pdaXWkMEBst/ohgoCsH4//Z"
+readonly IPHONE5_BASE64="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"
+readonly IPHONE5C_BASE64="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"
+readonly IPHONE5S_BASE64="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"
+readonly IPHONE6_BASE64="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"
+readonly IPHONE6PLUS_BASE64="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"
+readonly IPHONE6S_BASE64="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"
+readonly IPHONE6SPLUS_BASE64="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"
+readonly IPHONE7_BASE64="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"
+readonly IPHONE7PLUS_BASE64="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"
+readonly IPHONE8_BASE64="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"
+readonly IPHONE8PLUS_BASE64="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"
+readonly IPHONESE_BASE64="/9j/4AAQSkZJRgABAQEASABIAAD/2wBDABgREhUSDxgVFBUbGhgdJDwnJCEhJEo1OCw8WE1cW1ZNVVNhbYt2YWeDaFNVeaV6g4+UnJ2cXnSrt6mXtYuZnJX/2wBDARobGyQgJEcnJ0eVZFVklZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZX/wgARCADwAHMDAREAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAIDAQQF/8QAFwEBAQEBAAAAAAAAAAAAAAAAAAECA//aAAwDAQACEAMQAAAB9QnDVoAAAZGLhtjmkopQAABAuAABhoowABMmYVKAAAQlrYwAAAAAAAByTXQkrMGHAUUoBgpI6CM1dFsoBoGGDABggEpq9ypQBTBjRDCgATJzVUyygCmAYaA4ATEmq3KlAFFhjRTRqAJizTs5VAEhVWGMGsc2gmZNMmWUAyJ52k0GpS5bWdoJmTT3KlDJVzZTayo0yVuKaw2oEzJp7lSgubHPSc1kq2uy9ltc31kJmTT3KlCeNwz0m1ku2ZFLL65V1gqZk09yo8Tz0hncZsXU1K3NLiusNqTMmnuVHiWOkpuc0l1kOlLh7m1w2spWTT3Kjyzxqc3B0g3pWYrcVua3G6ylZNPcqUiWdxnSc0RqNY6Nc11htSYs1S5UfNSWU6LKyQdHuXZozXWN1JizVLlShkTzuc2sqrS5a5rc7c7UxZqlypQBc1ZZzYbZRl95AJiTVLnCgAZGKDWZG0ATEmqXOFAAAAAAAJiTVLnCgAAAAAAEyc1S5CgAAAAABI0nNUuUHAAEELABhznQJNUuaAAAIYOaAABCarcsAAAg5hoAAEZaptAAApg4AACmQ9TjKAADI2gAA2K1/8QAIxAAAgEDBQEAAwEAAAAAAAAAAAECEBESICExMkEwAxMiQv/aAAgBAQABBQLgu2b/AAsYm9XvLV+OcpfD3QpXk/ypP9yIyy1bnv2XORkb3tItId0ZFpFpH9G5+1EXRcx1WWixhEj2PYVZuXond3d6x7ESFWXIdOX/AKeiPY9hVm7LGxbfRHsLmFW2jJmY5GTLvRHsLmGi5cvtfTHsew0OvqFWPY9hXmnJxVVj2PYUY6PQqx7HsKtlxblxIvRUj2PYUY4lki+3AmJHtI9j2FHSQywlRKsex7CjGWLUtpj2PYUsSOaSFxfRHsewrY9ZY4ErirHsLmGi1LGOmPYXaGmwtUewu0PpHsLtD6R7C7Q+ecSPYXZOxmjNGaM0OSZsZozRmjNGKI8i7aXIu/gudMVt8PdPBktTdlFfyXsfsiZxM4mcTOJnEziZxM4mcTNFm2f/xAAgEQADAQEAAQQDAAAAAAAAAAAAAREQMCACEjFQIUBg/9oACAEDAQE/AeVL9i+7/ef1r8YQhOi8GPgj4351rgheT4pEGQb1+aF6ism3isWUeN8EIpcu/nzotQycriLjY3yuU9w+lG/7OEIQmQhCE3//xAAcEQACAgMBAQAAAAAAAAAAAAABEQAwIEBwEFD/2gAIAQIBAT8B5eKDrDQHzQr1mcxSovVBYoOAf//EACkQAAECBAcAAgEFAAAAAAAAAAABAhAwMXERICEyQZGhM1GBEkBCYZL/2gAIAQEABj8CPorJqVjh9Z1/U3CQuVU10MMHdG13RRc6z1N2H4PkTo3eG7w3eGr/AA+ROjd4bvDd4b/D5PBYKLfNTLtQdBRb5PsvFMjoKLeOJoJBRL5HQUW+SmGRMjoKLeOhQoUKZXQUW8x0FFvMdBRbzHQUW8x0FFvMdBRbzHQUW8x0FFvMdBRbzHQUW8x0FFvMdBRbzHQUW8x0FFvMdBwt5dR0HC441+jno56Oejno/kn4Nz+lOejno56Oeirv8jlg7NhVTVshc39/sKydYVKlY1KlSpoYu6h//8QAJRAAAgEDBAMBAQADAAAAAAAAAAERECExUXGhwSBBYZEwgfDx/9oACAEBAAE/IW0kvAsNQ+kBD1IepD1IepD1Ieo037N5LUQusT1zSz9LvP1M48mJypEr3itWt1DRhUIWraRuvJRQv7C7oG121WWlRibwVdmhyheAGZpMmm26kXODcw8i7oL1ukLREKZ91aTypPk/K5IaI/5hyehCLDcq0QlljjedkELX+BuFLHMmy9HoITcffDk9CMrpuYblZSk9F+Dn6jgjagmyyJrJoZ/7Y8OT0IQYblUfrI4I3HI0t8wRlCIJnCGm9j8OT0IaQw3KxEJHAZLP+QxP2RJpHahehYryehCxIYblWMOCFSJz4cnoQiw3KtwhpsNyoJNDuxi6vJ6EIsNyjG2mSbXFOzUygV4uL5ca0V5PQhFhuUQkpsNzYYStLE7QJ3RbvXk9CEWG4MbpO4ubDGoQVhMwvTk9CEWG4PFGqxkgrBPL26EvsVoTIr05PQhFhuEnyxuFcafYjJSTCcWpK1OT0IRYblPkxHgMqMMQgU6iinJ6EIsNwgYT0amRKn9LiUGhNOBYRFOT0IRYblGOTGoEqFYrSqBIFTk9CosNysD9jMikS9CUPw5PQqHDc8IIQJby5PQqHDc/pyehUOG5/Tk9CxTYbn870fo5PQsUy4kzex8/3Pn+58/3Pn+4pidpxQYnz/c+f7nz/c+P7lmOQXwHDftR6Fjz0DgnoIj0PjkTlSvJYNF5RSeV3RKG/JO2EO0tfJtZHxeU22QpORqUNsUrVH08JJ9hJxHjJJN7MSr0Yo//2gAMAwEAAgADAAAAEB6SST9qRwAAAAAISABIIABFQAAAAAJNJAIABKBpIBIABAKAJABAAAgAIIIAACAJ22wABwBhSTwAMAP3u+AJQJs4swBKAW2WIAJQJojxmBKOL1vPgJR3mODfxKA0ENUuBQ6JndyBCF80BcgAQLQmqKACAPzrwAJQAPCOAACAAAAAAAQAAAAABKAAAAAIJYABIAIZKAABYABAQAAQQAA2AALAABPfbbfbbWP/xAAfEQADAAICAwEBAAAAAAAAAAAAAREhMRAgMEFhUXH/2gAIAQMBAT8QMIq/C/ClKUpeH8FQ1+caXlQ1GPXmqHpef04nWdZz6ed6Xn9PO9LqhcJXu9LqtkJkhB76+nRCRioeXBqE6vS5jQlRJkSjpC4qEMMdXpdCSYg2kLCjcH9PY+r0uWIYlMiQ3mIazRozH0elwhLgWBghD8CN5Gj46PS4W+H4CcU3kav8GhyPKo1Bz1y9LhI+hKvAsEyINBq54nkfL0uEfXFBF3aGKOD6HpcJpCD+yzRZgxGVjGgxv10elykLATqIGHlkOBu9HpdExWWDgj2NV2el1ThVMg8l7PS870vO9LzvS8l5el2hF4Hrs98eu0PXbZGPqlRvInCJ6KKKKKIyiiiuFmuP/8QAHxEBAAICAwEBAQEAAAAAAAAAAQARECAwMUEhQFBh/9oACAECAQE/EMVKlSpUqVKlSv4RznOc5znOarUZcWobGixfmL+S7lw61NGXFly4fZeplRnUuLkYPdTR3GGRg+Gpl7josJ8dQ/3Qwxiw0uDBXehh6ixMuRhC/cmFTyOSOCBBqF5MMa8jKxUDcMIyomxD1oZWWVgLggJoaPqNMVLT4djVLnSD5CJsc5znOc5+U/OZuXLly5ZLly5cvP8A/8QAKBABAAIBAwIGAwEBAQAAAAAAAQARITFRsUFhECBxgaHwkcHRMOHx/9oACAEBAAE/EHL0NWZIui6mHWf4ndzuZ3M7mdzO5glLlt8U6XpDMPQSO4FeA2mlY3ennbth7s9vMLLNSGY6yrfV5QklAtA3tG4yqsVM/wDZw2CNVV5jQBq3r3nC/wBtD6uY1R3gcfIbaRAXh9G177JBF1Sx0fmdr+P9na/j/ZUBlq0/2CUC5wYztfx/s7X8f7CxHLWj+xYobPpgjVL0lsutQKsQf3Bh9XMKA7wlsHdO8/8AMnQDCrrNeINANkuAthp2eKApBNmA6fi+7TLef0z43hBh9XmcCff7+L0IvReh3gGmLVAv0mN0r8mLgIgAWrKpaCOtd42lMYdWF9tPJ8Lwgw+rzFe+M+8+/wB/E0S15NxihSnpYB6wUAqApdukscD9WrtHVDTq9Z9Tu8nwvCDHu8whUBPv9/FILoNg6PZjzIOEGnav+RAQq9gaqLZN3SGtsFUesYfcfw/3yfC8IMe7LkCZrM+/38SNSu/18zKXau87e0saRfVir9I2CgjfbrAxqNYV/k0itsiOPeWpevj8LwgxECrbuff7+F1MiOAJTzLR6XEosDZblnQQRDv4/C8JonAn3+/gomYfemq9CGvTtM0DWADsDFErscdKvWdTp4/C8JonAn3+/hiOh+5vAS5uQJijQrQjnDede0GYwrMqJZwywaDXx+F4TROBPv8Afwyd+jNIVS0LpFTLg0Np35WI4RpzEQzLDS+ELrLb4fC8JonAn3+8pWWoWablEDPtMh6Q2hrHsFXaCsdHUmKw+ZbLBenh8LwmicSff7ylrLJliqjLhrtOnW92OGVnMMW/lEvMFja4y9gjterC+s+F4TROJPv94oap9YNg7OkShGNoAxFqU2YGrXeK8c7wgwHpMGlEMl3PheE0TiT7/eP4ityuVEqSmzBTSEgoPS5S4mZfUg1qDYmM/fh8Lwmj3nFn3+8UuZhXMNMMyrdTiZA6fh3gHZp0hLCdEg6IcRolWde0BqPh8Lwmj3Zx59/v4IqusuVIiGsGQWdHvAGpjiWVkOa6xtXqS0jAjVY8PheE0e7OHPv9/Cu0UjfXaGCMJEt2TrpSCLLvWVFeT4XhNHuzgcT7/fyIRGNkCCK+sCiol+T4XhNHu8z55xPv9/8AT4XhNHu8z55xPv8Af/T4XhOZ5nyDiff7/wCY/EY/M+N4TmeZ8k4ippswxS7hPo/6n0f9T6P+p9H/AFCuoXZXiUjZTdP8J9H/AFPo/wCp9H/UxfX/ABPRir6d3tHUCGrE4dGczzPknHmK9nO0br0moQ6nE9oAJY6Pm5nmbMaZ38yddVO//DHhgGjnzE4azzB+AfNqmjo9Ini5dAbX2hvp5Q6CJVTot9XMBBmrkDcr5dt0rQdw8u22iC7EqADIOnd8P//Z"
+readonly IPHONEX_BASE64="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"
+readonly SORRY="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"
+
+#=== FUNCTION ==================================================================
+# NAME: get_hardware_info
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_hardware_info () {
+ # NOT in iTunes Backup!
+ # There are two general.log:
+ # - logs/AppleSupport/general.log <--- we prefer this one!
+ # - mobile/Library/Logs/AppleSupport/general.log
+ GENERAL_LOG="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -path "*logs/AppleSupport/general.log" )"
+
+ if [ -z "${GENERAL_LOG}" ] ; then
+ readonly GENERAL_SOURCE="general.log not found"
+ error "general.log not found"
+ readonly MODEL_IDENTIFIER="unknown"
+ BOARD_CONFIG="unknown" # <- could be modified later!
+ MODEL_NUMBER="unknown" # <- could be modified later!
+ readonly COMMON_NAME="unknown"
+ readonly SERIAL_NUMBER="unknown"
+ readonly PHOTO="SORRY"
+ else
+ readonly GENERAL_SOURCE="${GENERAL_LOG/${IOS_BACKUP}/\/private\/var}"
+ ${BIN_CP} "${GENERAL_LOG}" "${FOLDER}/"
+
+ # SC2016: shellcheck fails if awk/sed is used!
+ readonly MODEL_IDENTIFIER="$( ${BIN_AWK} '/Model:/ { print $2; }' "${FOLDER}/general.log" )"
+
+ [ -f "$( ${BIN_DIRNAME} "${0}" )/lib/iphone_hardware_map.tsv" ] || error_exit "iphone_hardware_map.tsv not found" 201
+
+ # Could be modified later!
+ BOARD_CONFIG="$( ${BIN_GREP} --fixed-strings --word-regexp "${MODEL_IDENTIFIER}" $( ${BIN_DIRNAME} "${0}" )/lib/iphone_hardware_map.tsv \
+ | ${BIN_HEAD} -n 1 \
+ | ${BIN_CUT} -f 3 \
+ | ${BIN_TR} "_" " " )"
+ [ -z "${BOARD_CONFIG}" ] && BOARD_CONFIG="unknown"
+
+ # Could be modified later!
+ MODEL_NUMBER="$( ${BIN_GREP} --fixed-strings --word-regexp "${MODEL_IDENTIFIER}" $( ${BIN_DIRNAME} "${0}" )/lib/iphone_hardware_map.tsv \
+ | ${BIN_HEAD} -n 1 \
+ | ${BIN_CUT} -f 2 \
+ | ${BIN_TR} "_" " " )"
+
+ [ -z "${MODEL_NUMBER}" ] && MODEL_NUMBER="unknown"
+ COMMON_NAME="$( ${BIN_GREP} --fixed-strings --word-regexp "${MODEL_IDENTIFIER}" $( ${BIN_DIRNAME} "${0}" )/lib/iphone_hardware_map.tsv \
+ | ${BIN_HEAD} -n 1 \
+ | ${BIN_CUT} -f 4 \
+ | ${BIN_TR} "_" " " )"
+ [ -z "${COMMON_NAME}" ] && readonly COMMON_NAME="unknown"
+
+ readonly SERIAL_NUMBER="$( ${BIN_AWK} '/Serial Number:/ { print $3; }' "${FOLDER}/general.log" )"
+
+ readonly PHOTO="$( ${BIN_PRINTF} "${COMMON_NAME}" | ${BIN_TR} -d " " | ${BIN_TR} "[[:lower:]]" "[[:upper:]]" )_BASE64"
+ fi
+
+ if [ -n "$( eval "${BIN_ECHO} -n \$${PHOTO}" )" ] ; then
+ eval "${BIN_ECHO} -n \$${PHOTO}" | ${BIN_BASE64} --decode > "${FOLDER}/photo.jpg"
+ else
+ ${BIN_ECHO} -n "${SORRY}" | ${BIN_BASE64} --decode > "${FOLDER}/photo.jpg"
+ fi
+
+ #--- next source ---
+
+ # NOT in iTunes Backup!
+ # http://newosxbook.com/articles/guesstalt.html
+ readonly MOBILE_GESTALT_PLIST="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "com.apple.MobileGestalt.plist" )"
+
+ if [ -z "${MOBILE_GESTALT_PLIST}" ] ; then
+ readonly MOBILE_GESTALT_SOURCE="com.apple.MobileGestalt.plist not found"
+ error "com.apple.MobileGestalt.plist not found"
+ else
+ readonly MOBILE_GESTALT_SOURCE="${MOBILE_GESTALT_PLIST/${IOS_BACKUP}/\/private\/var}"
+ plist_bin2xml "${MOBILE_GESTALT_PLIST}" "${FOLDER}/com.apple.MobileGestalt.plist"
+
+ readonly MODEL_NUMBER="$( ${BIN_GREP} --fixed-strings --after-context=1 "97JDvERpVwO+GHtthIh7hA" "${FOLDER}/com.apple.MobileGestalt.plist" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ readonly BOARD_CONFIG="$( ${BIN_GREP} --fixed-strings --after-context=1 "/YYygAofPDbhrwToVsXdeA" "${FOLDER}/com.apple.MobileGestalt.plist" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "MODEL_IDENTIFIER: %s\\n" "${MODEL_IDENTIFIER}" 1>&2
+ ${BIN_PRINTF} "MODEL_NUMBER: %s\\n" "${MODEL_NUMBER}" 1>&2
+ ${BIN_PRINTF} "BOARD_CONFIG: %s\\n" "${BOARD_CONFIG}" 1>&2
+ ${BIN_PRINTF} "COMMON_NAME: %s\\n" "${COMMON_NAME}" 1>&2
+ ${BIN_PRINTF} "SERIAL_NUMBER: %s\\n" "${SERIAL_NUMBER}" 1>&2
+ ${BIN_PRINTF} "PHOTO: %s\\n" "${PHOTO}" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+HARDWARE_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Hardware
+
+
+
+
Sources
+
+
${GENERAL_SOURCE}
+
${MOBILE_GESTALT_SOURCE}
+
+
Information
+
+
+
Model Identifier:
+
${MODEL_IDENTIFIER}
+
+
+
Model Number(s):
+
${MODEL_NUMBER}
+
+
+
Board Config:
+
${BOARD_CONFIG}
+
+
+
Common Name:
+
${COMMON_NAME}
+
+
+
Serial Number:
+
${SERIAL_NUMBER}
+
+
+
+
+
+
+
Photo
+
+
+
+
+
+EOF
+)
+
+readonly HARDWARE_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: hardware_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/iphone_hardware_map.tsv b/lib/iphone_hardware_map.tsv
new file mode 100644
index 0000000..36f23a0
--- /dev/null
+++ b/lib/iphone_hardware_map.tsv
@@ -0,0 +1,29 @@
+# "Model Identifier" "Model Number" "Board Config" "Common Name"
+iPhone1,1 A1203 M68AP iPhone
+iPhone1,2 A1241_or_A1324 N82AP iPhone_3G
+iPhone2,1 A1303_or_A1325 N88AP iPhone_3GS
+iPhone3,1 A1332 N90AP iPhone_4
+iPhone3,2 A1349 N90BAP iPhone_4
+iPhone3,3 A1332 N92AP iPhone_4
+iPhone4,1 A1387_or_vA1431 N94AP iPhone_4s
+iPhone5,1 A1428_or_A1429 N41AP iPhone_5
+iPhone5,2 A1429_or_A1442 N42AP iPhone_5
+iPhone5,3 A1456_or_A1532 N48AP iPhone_5c
+iPhone5,4 A1507,_A1516,_A1526_or_A1529 N49AP iPhone_5c
+iPhone6,1 A1453_or_A1533 N51AP iPhone_5s
+iPhone6,2 A1457,_A1518,_A1528_or_A1530 N53AP iPhone_5s
+iPhone7,1 A1633,_A1688,_A1691_or_A1700 N61AP iPhone_6
+iPhone7,2 A1522,_A1522,_A1524_or_A1593 N56AP iPhone_6_Plus
+iPhone8,1 A1633,_A1688,_A1691_or_A1700 N71AP_or_N71mAP iPhone_6s
+iPhone8,2 A1634,_A1687,_A1690_or_A1699 N66AP_or_N66mAP iPhone_6s_Plus
+iPhone8,4 A1662,_A1723_or_A1724 N69AP_or_N69uAP iPhone_SE
+iPhone9,1 A1660,_A1778,_A1779_or_A1780 D10AP iPhone_7
+iPhone9,3 A1660,_A1778,_A1779_or_A1780 D101AP iPhone_7
+iPhone9,2 A1661,_A1784,_A1785_or_A1786 D11AP iPhone_7_Plus
+iPhone9,4 A1661,_A1784,_A1785_or_A178 D111AP iPhone_7_Plus
+iPhone10,1 A1863,_A1905,_A1906_or_A1907 D20AP iPhone_8
+iPhone10,4 A1863,_A1905,_A1906_or_A1907 D201AP iPhone_8
+iPhone10,2 A1864,_A1897,_A1898_or_A1899 D21AP iPhone_8_Plus
+iPhone10,5 A1864,_A1897,_A1898_or_A1899 D211AP iPhone_8_Plus
+iPhone10,3 A1865,_A1901_or_A1902 D22AP iPhone_X
+iPhone10,6 A1901,_A1901_or_A1902 D221AP iPhone_X
diff --git a/lib/iphone_os_map.tsv b/lib/iphone_os_map.tsv
new file mode 100644
index 0000000..715a369
--- /dev/null
+++ b/lib/iphone_os_map.tsv
@@ -0,0 +1,133 @@
+# iPhone iOS version -> Build number
+1.0 1A543a
+1.0.1 1C25
+1.0.2 1C28
+1.1.1 3A109
+1.1.2 3B48b
+1.1.3 4A93
+1.1.4 4A102
+2.0 5A345
+2.0 5A347
+2.0.1 5B108
+2.0.2 5C1
+2.1 5F136
+2.2 5G77
+2.2.1 5H11
+3.0 7A341
+3.0.1 7A400
+3.1 7C144
+3.1.2 7D11
+3.1.3 7E18
+4.0 8A293
+4.0.1 8A306
+4.0.2 8A400
+4.1 8B117
+4.2.1 8C148a
+4.2.5 8E128
+4.2.6 8E200
+4.2.7 8E303
+4.2.8 8E40
+4.2.9 8E501
+4.2.10 8E600
+4.3 8F190
+4.3.1 8G4
+4.3.2 8H7
+4.3.3 8J2
+4.3.4 8K2
+4.3.5 8L1
+5.0 9A334
+5.0.1 9A405
+5.0.1 9A406
+5.1 9B176
+5.1 9B179
+5.1.1 9B206
+5.1.1 9B208
+6.0 10A403
+6.0 10A405
+6.0.1 10A523
+6.0.1 10A525
+6.0.2 10A551
+6.1 10B141
+6.1 10B142
+6.1 10B143
+6.1 10B144
+6.1.1 10B145
+6.1.2 10B146
+6.1.3 10B329
+6.1.4 10B350
+6.1.6 10B500
+7.0 11A465
+7.0 11A466
+7.0.1 11A470a
+7.0.2 11A501
+7.0.3 11B511
+7.0.4 11B553
+7.0.4 11B554a
+7.0.5 11B601
+7.0.6 11B651
+7.1 11D167
+7.1 11D169
+7.1.1 11D201
+7.1.2 11D257
+8.0 12A365
+8.0 12A366
+8.0.1 12A402
+8.0.2 12A405
+8.1 12B410
+8.1 12B411
+8.1.1 12B435
+8.1.1 12B436
+8.1.2 12B440
+8.1.3 12B466
+8.2 12D508
+8.3 12F69
+8.3 12F70
+8.4 12H143
+8.4.1 12H321
+9.0 13A342
+9.0 13A343
+9.0 13A344
+9.0.1 13A404
+9.0.1 13A405
+9.0.2 13A452
+9.1 13B139
+9.1 13B143
+9.2 13C75
+9.2.1 13D15
+9.2.1 13D20
+9.3 13E233
+9.3 13E234
+9.3 13E237
+9.3.1 13E238
+9.3.2 13F69
+9.3.3 13G34
+9.3.4 13G35
+9.3.5 13G36
+10.0.1 14A403
+10.0.2 14A456
+10.0.3 14A551
+10.1 14B72
+10.1 14B72c
+10.1.1 14B100
+10.1.1 14B150
+10.2 14C92
+10.2.1 14D27
+10.3 14E277
+10.3.1 14E304
+10.3.2 14F89
+10.3.3 14G60
+11.0 15A372
+11.0.1 15A402
+11.0.2 15A421
+11.0.3 15A432
+11.1 15B93
+11.1.1 15B150
+11.1.2 15B202
+11.2 15C113
+11.2 15C114
+11.2.1 15C153
+11.2.2 15C202
+11.2.5 15D60
+11.2.6 15D100
+11.3 15E216
+11.3.1 15E302
\ No newline at end of file
diff --git a/lib/kik_plugin.sh b/lib/kik_plugin.sh
new file mode 100755
index 0000000..dc331bc
--- /dev/null
+++ b/lib/kik_plugin.sh
@@ -0,0 +1,179 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./kik_plugin.sh
+#
+# USAGE:
+# . kik_plugin.sh
+# OR
+# source kik_plugin.sh
+#
+# DESCRIPTION:
+# Kik messenger plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034 ./kik_plugin.sh
+# - shellcheck -s ksh -e SC2034 ./kik_plugin.sh
+# - shellcheck -s dash -e SC2034 ./kik_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_kik_list
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_kik_list () {
+ # "8e281be6657d4523710d96341b6f86ba89b56df7" in iTunes Backup.
+ readonly KIK_SQLITE="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "kik.sqlite" )"
+
+ if ! [ -f "${KIK_SQLITE}" ] ; then
+ readonly KIK_SOURCE="kik.sqlite not found"
+ error "kik.sqlite not found"
+ readonly KIK_CONTACTS="
ERROR: database not found!
"
+ readonly KIK_MESSAGES="
ERROR: database not found!
"
+ else
+ KIK_SOURCE="${KIK_SQLITE/${IOS_BACKUP}/\/private\/var}"
+ # Don't forget to copy write ahead log!
+ ${BIN_CP} "${KIK_SQLITE}"* "${FOLDER}/"
+
+ readonly KIK_CONTACTS="$( ${BIN_SQLITE3} -html "${FOLDER}/kik.sqlite" \
+ "SELECT
+ Z_PK,
+ ZDISPLAYNAME,
+ ZFIRSTNAME,
+ ZLASTNAME,
+ ZUSERNAME
+ FROM
+ ZKIKUSER;" )"
+
+ readonly KIK_MESSAGES="$( ${BIN_SQLITE3} -html "${FOLDER}/kik.sqlite" \
+ "SELECT
+ m.Z_PK,
+ CASE WHEN m.ZTYPE=1 THEN 'received' WHEN m.ZTYPE=2 THEN 'sent' ELSE '(system)' END,
+ u.ZUSERNAME,
+ DATETIME(m.ZTIMESTAMP+978307200, 'unixepoch'),
+ m.ZBODY
+ FROM
+ ZKIKMESSAGE AS m,
+ ZKIKUSER AS u
+ WHERE
+ m.ZUSER=u.Z_PK;" )"
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: kik_plugin processed.\\n" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+KIK_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Kik Messenger
+
Sources
+
+
${KIK_SOURCE}
+
+
Contacts
+
+
+
ID
+
Displayname
+
Firstname
+
Lastname
+
Username
+
+ ${KIK_CONTACTS}
+
+
Messages
+
+
+
ID
+
Direction
+
Username
+
Date
+
Message
+
+ ${KIK_MESSAGES}
+
+EOF
+)
+
+readonly KIK_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: kik_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/network_plugin.sh b/lib/network_plugin.sh
new file mode 100755
index 0000000..604338c
--- /dev/null
+++ b/lib/network_plugin.sh
@@ -0,0 +1,211 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./network_plugin.sh
+#
+# USAGE:
+# . network_plugin.sh
+# OR
+# source network_plugin.sh
+#
+# DESCRIPTION:
+# Network plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034,SC2016 ./hardware_plugin.sh
+# - shellcheck -s ksh -e SC2034,SC2016 ./hardware_plugin.sh
+# - shellcheck -s dash -e SC2034,SC2016 ./hardware_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.1
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-05
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+# 1.1 - P. N. - added network plugin
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_hardware_info
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_network_info () {
+ # NOT in iTunes Backup!
+ readonly NETWORK_INTERFACES_PLIST="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "NetworkInterfaces.plist" )"
+
+ if [ -z "${NETWORK_INTERFACES_PLIST}" ] ; then
+ readonly NETWORK_INTERFACES_SOURCE="NetworkInterfaces.plist not found"
+ error "NetworkInterfaces.plist not found"
+ readonly MAC_ADDRESS="unknown"
+ else
+ readonly NETWORK_INTERFACES_SOURCE="${NETWORK_INTERFACES_PLIST/${IOS_BACKUP}/\/private\/var}"
+ plist_bin2xml "${NETWORK_INTERFACES_PLIST}" "${FOLDER}/NetworkInterfaces.plist"
+
+ readonly MAC_ADDRESS="$( ${BIN_GREP} --fixed-strings --after-context=3 "IOMACAddress" "${FOLDER}/NetworkInterfaces.plist" \
+ | ${BIN_GREP} --invert-match "<" \
+ | ${BIN_HEAD} -n 1 \
+ | ${BIN_TR} -d [[:space:]] \
+ | ${BIN_BASE64} --decode \
+ | ${BIN_XXD} -plain \
+ | ${BIN_SED} 's/\(..\)/\1:/g;s/:$//' )"
+ fi
+
+ #--- next source ---
+
+ # NOT in iTunes Backup!
+ # db/dhcpclient/leases/en0-1,c0:f2:fb:b8:8a:63
+ readonly DHCPC_LEASES_PLIST="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "en0-1,${MAC_ADDRESS}" )"
+
+ if [ -z "${DHCPC_LEASES_PLIST}" ] ; then
+ readonly DHCPC_LEASES_SOURCE="en0-1,${MAC_ADDRESS} not found"
+ error "en0-1,${MAC_ADDRESS} not found"
+ else
+ readonly DHCPC_LEASES_SOURCE="${DHCPC_LEASES_PLIST/${IOS_BACKUP}/\/private\/var}"
+ plist_bin2xml "${DHCPC_LEASES_PLIST}" "${FOLDER}/en0-1,${MAC_ADDRESS}"
+
+ readonly CLIENT_IP="$( ${BIN_GREP} --fixed-strings --after-context=1 "IPAddress" "${FOLDER}/en0-1,${MAC_ADDRESS}" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ readonly LEASE_START_DATE="$( ${BIN_GREP} --fixed-strings --after-context=1 "LeaseStartDate" "${FOLDER}/en0-1,${MAC_ADDRESS}" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ readonly BSSID="$( ${BIN_GREP} --fixed-strings --after-context=3 "RouterHardwareAddress" "${FOLDER}/en0-1,${MAC_ADDRESS}" \
+ | ${BIN_GREP} --invert-match "<" \
+ | ${BIN_HEAD} -n 1 \
+ | ${BIN_TR} -d [[:space:]] \
+ | ${BIN_BASE64} --decode \
+ | ${BIN_XXD} -plain \
+ | ${BIN_SED} 's/\(..\)/\1:/g;s/:$//' )"
+
+ readonly ROUTER_IP="$( ${BIN_GREP} --fixed-strings --after-context=1 "RouterIPAddress" "${FOLDER}/en0-1,${MAC_ADDRESS}" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+
+ readonly ESSID="$( ${BIN_GREP} --fixed-strings --after-context=1 "SSID" "${FOLDER}/en0-1,${MAC_ADDRESS}" \
+ | ${BIN_TAIL} -n 1 \
+ | ${BIN_SED} "${SED_EXT_REGEXP}" 's|[[:space:]]*?string>||g' )"
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "MAC_ADDRESS: %s\\n" "${MAC_ADDRESS}" 1>&2
+ ${BIN_PRINTF} "CLIENT_IP: %s\\n" "${CLIENT_IP}" 1>&2
+ ${BIN_PRINTF} "LEASE_START_DATE: %s\\n" "${LEASE_START_DATE}" 1>&2
+ ${BIN_PRINTF} "BSSID: %s\\n" "${BSSID}" 1>&2
+ ${BIN_PRINTF} "ROUTER_IP: %s\\n" "${ROUTER_IP}" 1>&2
+ ${BIN_PRINTF} "ESSID: %s\\n" "${ESSID}" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for network information for the simple template engine.
+#-------------------------------------------------------------------------------
+NETWORK_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Network
+
Sources
+
+
${NETWORK_INTERFACES_SOURCE}
+
${DHCPC_LEASES_SOURCE}
+
+
Information
+
+
+
MAC Address (Wi-Fi):
+
${MAC_ADDRESS}
+
+
+
Client IP Address:
+
${CLIENT_IP}
+
+
+
Lease start date:
+
${LEASE_START_DATE}
+
+
+
BSSID:
+
${BSSID}
+
+
+
Router IP Address:
+
${ROUTER_IP}
+
+
+
(E)SSID:
+
${ESSID}
+
+
+EOF
+)
+
+readonly NETWORK_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: network_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/os_plugin.sh b/lib/os_plugin.sh
new file mode 100755
index 0000000..20ef521
--- /dev/null
+++ b/lib/os_plugin.sh
@@ -0,0 +1,177 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./os_plugin.sh
+#
+# USAGE:
+# . os_plugin.sh
+# OR
+# source os_plugin.sh
+#
+# DESCRIPTION:
+# Operating system plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034,SC2016 ./os_plugin.sh
+# - shellcheck -s ksh -e SC2034,SC2016 ./os_plugin.sh
+# - shellcheck -s dash -e SC2034,SC2016 ./os_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+# See template engine library!
+
+#=== FUNCTION ==================================================================
+# NAME: get_os_info
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_os_info () {
+ # NOT in iTunes Backup!
+ readonly LOCKDOWND_LOG="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "lockdownd.log" )"
+
+ if [ -z "${LOCKDOWND_LOG}" ] ; then
+ readonly LOCKDOWND_SOURCE="lockdownd.log not found"
+ error "lockdownd.log not found"
+ readonly BUILD_NUMBER="unknown"
+ readonly OS_VERSION="unknown"
+ else
+ readonly LOCKDOWND_SOURCE="${LOCKDOWND_LOG/${IOS_BACKUP}/\/private\/var}"
+ ${BIN_CP} "${LOCKDOWND_LOG}" "${FOLDER}/"
+
+ # SC2016: shellcheck fails if awk/sed is used!
+ readonly BUILD_NUMBER="$( ${BIN_AWK} '/Build=/ { print $NF; }' "${FOLDER}/lockdownd.log" | ${BIN_HEAD} -n 1 )"
+
+ [ -f "$( ${BIN_DIRNAME} "${0}" )/lib/iphone_os_map.tsv" ] || error_exit "iphone_os_map.tsv not found" 201
+
+ OS_VERSION="$( ${BIN_GREP} --fixed-strings --word-regexp "${BUILD_NUMBER}" $( ${BIN_DIRNAME} "${0}" )/lib/iphone_os_map.tsv \
+ | ${BIN_CUT} -f 1 )"
+ [ -z "${OS_VERSION}" ] && readonly OS_VERSION="unknown"
+ fi
+
+ #--- next source ---
+
+ # EVENTUALLY in iTunes Backup!?
+ # There are three com.saurik.Cydia named folders:
+ # - mobile/Library/Caches/Snapshots/com.saurik.Cydia
+ # - mobile/Library/Caches/Snapshots/com.saurik.Cydia/com.saurik.Cydia
+ # - mobile/Library/Caches/com.saurik.Cydia
+ CACHE_CYDIA="$( ${BIN_FIND} "${IOS_BACKUP}" -type d -path "*Caches/com.saurik.Cydia" )"
+
+ JAILBREAK="no"
+ if [ -n "${CACHE_CYDIA}" ] ; then
+ if [ -n "$( ${BIN_LS} "${CACHE_CYDIA}" )" ] ; then
+ readonly JAILBREAK="yes"
+ fi
+ fi
+ [ "${JAILBREAK}" = "no" ] && readonly CACHE_CYDIA="com.saurik.Cydia not found"
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "OS_VERSION: %s\\n" "${OS_VERSION}" 1>&2
+ ${BIN_PRINTF} "BUILD_NUMBER: %s\\n" "${BUILD_NUMBER}" 1>&2
+ ${BIN_PRINTF} "JAILBREAK: %s\\n" "${JAILBREAK}" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+OS_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
Operating System
+
Sources
+
+
${LOCKDOWND_SOURCE}
+
${CACHE_CYDIA/${IOS_BACKUP}/\/private\/var}
+
+
Information
+
+
+
iOS Version:
+
${OS_VERSION}
+
+
+
Build Number:
+
${BUILD_NUMBER}
+
+
+
Jailbreak detected:
+
${JAILBREAK}
+
+
+EOF
+)
+
+readonly OS_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: os_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/sms_plugin.sh b/lib/sms_plugin.sh
new file mode 100755
index 0000000..378b1cb
--- /dev/null
+++ b/lib/sms_plugin.sh
@@ -0,0 +1,161 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./sms_plugin.sh
+#
+# USAGE:
+# . sms_plugin.sh
+# OR
+# source sms_plugin.sh
+#
+#
+# DESCRIPTION:
+# SMS/iMessage plugin (library) to generate content with simple template engine.
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2034 ./sms_plugin.sh
+# - shellcheck -s ksh -e SC2034 ./sms_plugin.sh
+# - shellcheck -s dash -e SC2034 ./sms_plugin.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 200
+fi
+
+#-------------------------------------------------------------------------------
+# Check if temblate engine library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${TEMPLATE_ENGINE_LOADED}" != "true" ] ; then
+ error_exit "template_engine.sh not loaded" 200
+fi
+
+#=== CONFIGURATION (static) ====================================================
+#assign_binary "xyz" # (un)common
+
+#=== FUNCTION ==================================================================
+# NAME: get_sms_list
+# DESCRIPTION: "Grep" information and store into vars.
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+get_sms_list () {
+ # "3d0d7e5fb2ce288813306e4d4636395e047a3d28" in iTunes Backup.
+ readonly SMS_SQLITE="$( ${BIN_FIND} "${IOS_BACKUP}" -type f -name "sms.db" )"
+
+ if [ -z "${SMS_SQLITE}" ] ; then
+ readonly SMS_SOURCE="sms.db not found"
+ error "sms.db not found"
+ readonly SMS_LIST="
ERROR: database not found!
"
+ else
+ readonly SMS_SOURCE="${SMS_SQLITE/${IOS_BACKUP}/\/private\/var}"
+ # * -> Don't forget to copy write ahead log!
+ ${BIN_CP} "${SMS_SQLITE}"* "${FOLDER}/"
+
+ readonly SMS_LIST="$( ${BIN_SQLITE3} -html "${FOLDER}/sms.db" \
+ "SELECT
+ m.ROWID,
+ m.text,
+ m.service,
+ DATETIME(m.date+978307200, 'unixepoch'),
+ REPLACE (m.account, 'p:', ''),
+ CASE WHEN m.is_from_me=0 THEN '<-' ELSE '->' END,
+ h.id
+ FROM
+ message AS m, handle AS h
+ WHERE
+ m.handle_id=h.ROWID;" )"
+ fi
+
+ if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: sms_plugin processed.\\n" 1>&2
+ fi
+}
+
+#-------------------------------------------------------------------------------
+# Partial template for hardware information for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+SMS_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
SMS/iMessage
+
Sources
+
+
${SMS_SOURCE}
+
+
Information
+
+
+
ID
+
Text
+
Service
+
Date
+
Me
+
Direction
+
Other
+
+ ${SMS_LIST}
+
+EOF
+)
+
+readonly SMS_PLUGIN_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: sms_plugin.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file
diff --git a/lib/template_engine.sh b/lib/template_engine.sh
new file mode 100755
index 0000000..d6e729d
--- /dev/null
+++ b/lib/template_engine.sh
@@ -0,0 +1,406 @@
+#!/usr/bin/env bash
+#===============================================================================
+#
+# DIRECTORY:
+# ---
+#
+# FILE:
+# ./template_engine.sh
+#
+# USAGE:
+# . template_engine.sh
+# OR
+# source template_engine.sh
+#
+# EXIT STATES:
+# 201 = functions library not loaded
+# 202 = libplist (Linux/FreeBSD) not installed
+# 203 = base64 not installed
+# 204 = vim (xxd) not installed
+# 205 = sqlite3 not installed
+# 206 = os not supported (yet)
+#
+# DESCRIPTION:
+# Simple template engine (library) with templates for basic content.
+#
+# REQUIREMENTS:
+# cat, base64, mkdir, ...
+#
+# BUGS:
+# ---
+#
+# TESTS:
+# - shellcheck -s bash -e SC2086,SC2034 ./template_engine.sh
+# - shellcheck -s ksh -e SC2086,SC2034 ./template_engine.sh
+# - shellcheck -s dash -e SC2086,SC2034 ./template_engine.sh
+#
+# AUTHOR:
+# Patrick Neumann, patrick@neumannsland.de
+#
+# COAUTHOR(S):
+# Odin Heitmann, odin.heitmann@gmail.com
+#
+# COMPANY:
+# (privately)
+#
+# VERSION:
+# 1.0
+#
+# LINK TO THE MOST CURRENT VERSION:
+# (Sorry, we bet, I'm not allowed to publish it over GitHub!)
+#
+# CREATED:
+# 2018-06-01
+#
+# COPYRIGHT (C):
+# 2018 - Patrick Neumann & Odin Heitmann
+#
+# LICENSE:
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# WARRANTY:
+# 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, see .
+#
+# NOTES:
+# ---
+#
+# TODO:
+# ---
+#
+# HISTORY:
+# 1.0 - P. N. & O. H. - Initial (for the trainers eyes only) release
+#
+#===============================================================================
+
+#-------------------------------------------------------------------------------
+# Check if functions library is loaded first.
+#-------------------------------------------------------------------------------
+if [ "${FUNCTIONS_LOADED}" != "true" ] ; then
+ printf "\\n\\033[01;31;40mERROR: functions library not loaded... EXIT!!!\\033[00m\\n\\n"
+ exit 201
+fi
+
+#=== CONFIGURATION (static) ====================================================
+assign_binary "echo" # common
+assign_binary "base64" # uncommon: FreeBSD
+assign_binary "cat" # common
+assign_binary "file" # common
+# for plugins:
+assign_binary "cp" # common
+assign_binary "head" # common
+assign_binary "tail" # common
+assign_binary "xxd" # uncommon: Arch Linux/FreeBSD
+assign_binary "find" # common
+
+case "${OS_NAME}" in
+ Darwin) assign_binary "plutil" # common only macOS
+ ;;
+ Linux|FreeBSD) assign_binary "plistutil"
+ [ -z "${BIN_PLISTUTIL}" ] && error_exit "please install libplist and retry" 202
+ ;;
+ *) error_exit "Sorry, your os is actually not supported\\!"
+ ;;
+esac
+
+# Because sqlite3 from macOS 10.13.4 does not remove *-wal and *-shm files
+# after exit it is better to use that one from Homebrew (if installed):
+readonly HOMEBREW_SQLITE="/usr/local/opt/sqlite/bin"
+if [ -d "${HOMEBREW_SQLITE}" ] && [ -n "${PATH##*${HOMEBREW_SQLITE}*}" ] ; then
+ export PATH="/usr/local/opt/sqlite/bin:${PATH}"
+fi
+assign_binary "sqlite3" # uncommon: FreeBSD
+
+#-------------------------------------------------------------------------------
+# Check existence of uncommon binaries.
+#-------------------------------------------------------------------------------
+[ -z "${BIN_BASE64}" ] && error_exit "please install base64 and retry" 203
+[ -z "${BIN_XXD}" ] && error_exit "please install vim (xxd) and retry" 204
+[ -z "${BIN_SQLITE3}" ] && error_exit "please install vim (xxd) and retry" 205
+
+#=== FUNCTION ==================================================================
+# "The template engine"
+# (inspired by: http://pempek.net/articles/2013/07/08/bash-sh-as-template-engine/)
+#===============================================================================
+render_template() {
+ # with no options echo from each shell will do it
+ eval "echo \"${1}\""
+}
+
+#=== FUNCTION ==================================================================
+# NAME: init_folder
+# DESCRIPTION: create folder with initial content (html, css, jpg and images)
+# PARAMETERS: none (global vars will be used.)
+#===============================================================================
+init_folder () {
+ #-------------------------------------------------------------------------------
+ # Create the favicon.
+ #-------------------------------------------------------------------------------
+ # Into base64 converted binary data could be "a little bit longer".
+ # "echo" expects longer argument list then printf.
+ # Freeing some memory afterwards could not be amiss.
+ FAVICON_BASE64="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ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAWgAAAPoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8eHh7/nJyc/5CQkP9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//kZGR/5ubm/8eHh7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+gAAAGAAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA7AAAA5gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0hISP+hoaH/gICA/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//4CAgP+hoaH/SEhI/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOYAAAA6AAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAACwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/VlZW/5qamv9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//m5ub/1VVVf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACxAAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAF0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9JSUn/nJyc/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//5ubm/9ISEj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAYgAAABgAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAM8AAAD/AAAA/wAAAP8AAAD/AAAA/x8fH/+ioqL/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+ZmZn/HBwc/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAzwAAACkAAAAAAAAAAAAAAAAAAAASAAAAaQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/5ycnP+AgID/aGho/0hISP9HR0f/VFRU/3p6ev9/f3//cXFx/1BQUP9ISEj/ZWVl/1ZWVv9ERET/QkJC/0JCQv9CQkL/SEhI/0BAQP9AQED/XV1d/39/f/9/f3//f39//15eXv8+Pj7/Pj4+/0hISP91dXX/m5ub/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAGEAAAATAAAAAAAAAAAAAAAjAAAAuwAAAP8cHBz/AQEB/wAAAP8AAAD/W1tb/5CQkP9/f3//TU1N/4KCgv+AgID/ICAg/3Fxcf9sbGz/QUFB/3Z2dv8/Pz//NjY2/29vb/+Xl5f/mZmZ/5mZmf+ZmZn/MTEx/5mZmf9gYGD/Ozs7/3x8fP99fX3/f39//0dHR/+pqan/qamp/yMjI/9ra2v/kZGR/1lZWf8AAAD/AAAA/wQEBP8HBwf/AAAA/wAAALYAAAAjAAAAAAAAAAAAAABDAAAA+gAAAP+Dg4P/sbGx/2dnZ/8CAgL/oKCg/39/f/9/f3//TU1N//Dw8P/w8PD/Hx8f/0xMTP89PT3/t7e3//////9zc3P/p6en///////V1dX/w8PD/8PDw//Dw8P/S0tL//////+hoaH/KCgo/zIyMv85OTn/XFxc/0xMTP///////////ysrK/9ra2v/f39//5+fn/8BAQH/UVFR/4qKiv+Kior/AAAA/wAAAPoAAABDAAAAAAAAABcAAAB2AAAA/xkZGf+Ojo7/xsbG/xcXF/9SUlL/kpKS/39/f/9/f3//TU1N//Dw8P/39/f/eHh4/0BAQP/V1dX///////////9zc3P/2NjY/8jIyP8xMTH/Wlpa/1lZWf9ZWVn/Wlpa///////n5+f/vb29/7q6uv+UlJT/JiYm/0ZGRv///////////ysrK/9ra2v/f39//5KSkv9QUFD/WFhY/8nJyf+ZmZn/BAQE/wAAAP8AAAB3AAAAGwAAABwAAACtAAAA/x8fH/9ZWVn/V1dX/ygoKP+QkJD/f39//39/f/9/f3//TU1N//Dw8P///////////2lpaf+Dg4P/tLS0//////9zc3P/2dnZ/8vLy/8ZGRn/Jycn/ycnJ/8nJyf/QUFB/7u7u/+7u7v/u7u7/7u7u/+7u7v/YGBg/zExMf///////////ysrK/9ra2v/f39//39/f/+Pj4//HBwc/1BQUP+Tk5P/Ozs7/wAAAP8AAACtAAAAIgAAACIAAADdAAAA/4uLi/9KSkr/np6e/wICAv+ioqL/f39//39/f/9/f3//TU1N//Dw8P/39/f/ampq/1RUVP9qamr/fHx8//////9zc3P/oqKi///////q6ur/2NjY/9jY2P/Y2Nj/QUFB/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/0pKSv///////////ysrK/9ra2v/f39//39/f/+hoaH/AgIC/6Ojo/82Njb/g4OD/wAAAP8AAADdAAAAIgAAADkAAAD+AAAA/0RERP+hoaH/dnZ2/zExMf+ZmZn/f39//39/f/9/f3//VVVV/5OTk/9WVlb/XFxc/3p6ev91dXX/YWFh/5qamv9TU1P/UlJS/4ODg/+bm5v/nZ2d/56env+dnZ3/RkZG/5ubm/+ampr/mpqa/5qamv+ampr/mpqa/0RERP+hoaH/oaGh/zIyMv9ubm7/f39//39/f/+ampr/Li4u/1paWv95eXn/PT09/wAAAP8AAAD7AAAAMQAAAFoAAAD/EBAQ/6Ojo/+fn5//VVVV/2hoaP+Hh4f/f39//39/f/9/f3//eHh4/21tbf9wcHD/fHx8/39/f/99fX3/cXFx/21tbf9wcHD/h4eH/5SUlP+ZmZn/qKio/62trf+hoaH/kpKS/4KCgv90dHT/bGxs/2xsbP9sbGz/bGxs/25ubv9sbGz/bGxs/29vb/98fHz/f39//39/f/+IiIj/ZWVl/15eXv+enp7/xMTE/wsLC/8AAAD/AAAAVAAAAGcAAAD/GRkZ/5mZmf+goKD/Ozs7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Hh4f/nZ2d/7e3t//S0tL/6Ojs/+3t8v/g4OD/xMTE/6qqqv+SkpL/gICA/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//z4+Pv9MTEz/FRUV/wQEBP8AAAD/AAAAZwAAAGcAAAD/CQkJ/0xMTP9ISEj/Ly8v/4GBgf9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+MjIz/q6ur/8vLy/+nser/GELX/xc/1/+hrfD/3t7e/7y8vP+bm5v/goKC/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//gYGB/wsLC/+pqan/2NjY/x8fH/8AAAD/AAAAbAAAAGcAAAD/Ojo6/4CAgP9dXV3/cHBw/4GBgf9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+QkJD/tLS0/9jY2P9DYt//QWbZ/32W5v89X97/6urq/8bGxv+ioqL/g4OD/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//gYGB/z09Pf9kZGT/EhIS/wAAAP8AAAD/AAAAbAAAAGcAAAD/BgYG/4uLi/+ZmZn/Gxsb/35+fv9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+MjIz/q6ur/83Nzf9YceH/Xn/e/67A7v9eduT/39/f/7y8vP+bm5v/goKC/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//29vb/+rq6v/NjY2/xUVFf8AAAD/AAAAZwAAAFoAAAD/BwcH/5+fn/+jo6P/Xl5e/2hoaP+Hh4f/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Hh4f/np6e/7e3t//Ky9X/Um7f/2N65f/MzuL/xMTE/6qqqv+SkpL/gICA/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+IiIj/Z2dn/1lZWf+bm5v/oaGh/wwMDP8AAAD/AAAAVAAAADsAAAD+AAAA/ysrK/+YmJj/a2tr/zExMf+ampr/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Dg4P/enp6/6Kiov+3t7f/ysrK/9HR0f/BwcH/ra2t/3t7e/+Kior/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+bm5v/Ly8v/3l5ef90dHT/Ojo6/wAAAP8AAAD7AAAAMgAAACIAAADdAAAA/42Njf8SEhL/VlZW/wMDA/+ioqL/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9ra2v/BgYG/yIiIv9xcXH/pKSk/6qqqv9+fn7/Li4u/wAAAP9XV1f/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+ioqL/CAgI/xkZGf8zMzP/SUlJ/wAAAP8AAADdAAAAIgAAABwAAACtAAAA/xUVFf8AAAD/AAAA/wAAAP+QkJD/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/98fHz/OTk5/wICAv8AAAD/AgIC/wICAv8AAAD/AQEB/y8vL/93d3f/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+Pj4//ExMT/5SUlP+pqan/aWlp/wAAAP8AAACtAAAAIgAAABcAAAB3AAAA/wAAAP8sLCz/np6e/2xsbP9SUlL/kpKS/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//TExM/0FBQf9/f3//f39//3BwcP9CQkL/Kysr/yoqKv8/Pz//a2tr/39/f/9/f3//YWFh/1xcXP9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//5KSkv9RUVH/cHBw/3h4eP8TExP/Hx8f/wAAAP8AAAB3AAAAGwAAAAAAAABEAAAA+gAAAP+SkpL/DAwM/z8/P/8CAgL/np6e/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9+fn7/Gxsb/wAAAP8mJib/b29v/39/f/9/f3//f39//39/f/9/f3//f39//3R0dP81NTX/AQEB/w4ODv99fX3/f39//39/f/9/f3//f39//39/f/9/f3//f39//56env8ODg7/SEhI/5+fn/+Ghob/AAAA/wAAAPoAAABEAAAAAAAAAAAAAAAmAAAAuwAAAP8jIyP/h4eH/5qamv9sbGz/XV1d/5CQkP9/f3//f39//39/f/9/f3//f39//35+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AK0AAADdAAAA/gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP4AAADdAAAArQAAAHYAAABDAAAAIwAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAABwAAAAiAAAAOwAAAFoAAABnAAAAZwAAAGcAAABnAAAAWgAAADkAAAAiAAAAHAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA///AA///AAD//gAAf/8AAP/4AAAf/wAA/+AAAAf/AAD/wAAAA/8AAP+AAAAB/wAA/gAAAAB/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAOAAAAAABwAA4AAAAAAHAADwAAAAAA8AAPAAAAAADwAA+AAAAAAfAAD8AAAAAD8AAP4AAAAAfwAA/gAAAAB/AAD/gAAAAf8AAP/AAAAD/wAA/+AAAAf/AAD/+AAAH/8AAP/+AAB//wAA///AA///AAD///////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABRAAAAewAAAJMAAACbAAAAmwAAAJEAAAB6AAAAUAAAACAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAA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f/9/f3//np6e/8zMzv9pe+b/W3Pl/+Pj5/+1tbX/iYmJ/39/f/9/f3//f39//39/f/9/f3//f39//39/f/95eXn/Y2Nj/5CQkP8ODg7/AAAAmwAAAJscHBz/mpqa/3Fxcf94eHj/f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/+lpaX/p6zd/zhk2v+Fnuf/l6bn/7+/v/+Li4v/f39//39/f/9/f3//f39//39/f/9/f3//f39//3l5ef9XV1f/LS0t/wEBAf8AAACbAAAAkwMDA/91dXX/T09P/3Fxcf9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//5eXl/+8vL//UGzg/2qC5v/OztX/qamp/4aGhv9/f3//f39//39/f/9/f3//f39//39/f/9/f3//cXFx/3Fxcf+Tk5P/Dg4O/wAAAJMAAAB7AAAA/1paWv9xcXH/YmJi/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//ZGRk/4uLi/+3t7f/wMDA/5ubm/9gYGD/goKC/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9gYGD/X19f/2RkZP8AAAD/AAAAewAAAFMAAAD/JCQk/wgICP8rKyv/jIyM/39/f/9/f3//f39//39/f/9/f3//f39//39/f/85OTn/BQUF/ygoKP8rKyv/BgYG/y8vL/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//jY2N/zIyMv9xcXH/VFRU/wAAAP8AAABRAAAAIwAAAOENDQ3/d3d3/0tLS/+Ghob/f39//39/f/9/f3//f39//39/f/9NTU3/PDw8/35+fv9tbW3/S0tL/0lJSf9paWn/f39//1BQUP9XV1f/f39//39/f/9/f3//f39//39/f/+FhYX/TExM/1hYWP8qKir/AAAA3QAAACAAAAAUAAAAnRAQEP9QUFD/cXFx/1FRUf+Hh4f/f39//39/f/9/f3//f39//2xsbP8WFhb/FxcX/05OTv9oaGj/aGho/01NTf8bGxv/Dg4O/1xcXP9+fn7/f39//39/f/9/f3//h4eH/1JSUv9mZmb/WFhY/w4ODv8AAACaAAAAEAAAAAAAAABQAAAA+lJSUv93d3f/MjIy/4SEhP9/f3//f39//2ZmZv8YGBj/aGho/319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"
+ ${BIN_ECHO} -n "${FAVICON_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/favicon.ico"
+ FAVICON_BASE64=
+
+ #-------------------------------------------------------------------------------
+ # Create the logo.
+ #-------------------------------------------------------------------------------
+ LOGO_BASE64="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"
+ ${BIN_ECHO} -n "${LOGO_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/logo_72x72.png"
+ LOGO_BASE64=
+
+ #-------------------------------------------------------------------------------
+ # Create the CSS files (customized YAML).
+ #-------------------------------------------------------------------------------
+ IEHACKS_BASE64="LyogWWV0IEFub3RoZXIgTXVsdGljb2x1bW4gTGF5b3V0IC0gaHR0cDovL3d3dy55YW1sLmRlICovCkBtZWRpYSBhbGx7Ym9keXtvXHZlcmZsb3c6dmlzaWJsZX1hcnRpY2xlLGFzaWRlLGRldGFpbHMsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixtYWluLG5hdixzZWN0aW9ue3pvb206MX1hdWRpbyxjYW52YXMsdmlkZW97KmRpc3BsYXk6aW5saW5lOyp6b29tOjF9aW1ney1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6YmljdWJpYzt6b29tOjF9KiBodG1sIGlmcmFtZSwqIGh0bWwgZnJhbWV7b3ZlcmZsb3c6YXV0b30qIGh0bWwgaW5wdXQsKiBodG1sIGZyYW1lc2V0e292ZXJmbG93OmhpZGRlbn0qIGh0bWwgdGV4dGFyZWF7b3ZlcmZsb3c6c2Nyb2xsO292ZXJmbG93LXg6aGlkZGVufWJvZHksI21haW57cG9zaXRpb246cmVsYXRpdmV9KiBodG1sIGJvZHl7cG9zaXRpb246c3RhdGljfS55bS1jbGVhcmZpeHt6b29tOjF9KiBodG1sIC55bS1jb2wxLCogaHRtbCAueW0tY29sMiwqIGh0bWwgLnltLWNvbDN7cG9zaXRpb246cmVsYXRpdmV9Ym9keXtoZWlnaHQ6MSV9LnltLXdyYXBwZXIsLnltLXdib3gsI2hlYWRlciwjbmF2LCNtYWluLCNmb290ZXJ7em9vbToxfSogaHRtbCAueW0td3JhcHBlciwqIGh0bWwgLnltLXdib3h7aGVpZ2h0OjElO2hlaVxnaHQ6YXV0b30qIGh0bWwgI2hlYWRlciwqIGh0bWwgI25hdiwqIGh0bWwgI21haW4sKiBodG1sICNmb290ZXJ7d2lkdGg6MTAwJTt3aWRcdGg6YXV0b30ueW0tZ2JveCwueW0tZ2JveC1sZWZ0LC55bS1nYm94LXJpZ2h0e2hlaWdodDoxJX0qIGh0bWwgdWwsKiBodG1sIG9sLCogaHRtbCBkbHtwb3NpdGlvbjpyZWxhdGl2ZX1ib2R5IG9sIGxpe2Rpc3BsYXk6bGlzdC1pdGVtfSogaHRtbCAuZmxleGlibGV7em9vbToxfWJ1dHRvbixpbnB1dHsqb3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnR9dGFibGUgYnV0dG9uLHRhYmxlIGlucHV0eypvdmVyZmxvdzphdXRvfWZpZWxkc2V0LGxlZ2VuZHtwb3NpdGlvbjpyZWxhdGl2ZX0ueW0tZm9ybSwueW0tZm9ybSBkaXYsLnltLWZvcm0gZGl2ICp7em9vbToxfS55bS1mb3JtIGlucHV0LC55bS1mb3JtIHRleHRhcmVhe3dpZHRoOjY4JTtwYWRkaW5nLWxlZnQ6MSUhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MSUhaW1wb3J0YW50fS55bS1mb3JtIHNlbGVjdHt3aWR0aDo3MCU7cGFkZGluZy1sZWZ0OjElIWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjElIWltcG9ydGFudH0ueW0tZm9ybSAueW0tZmJveC13cmFwe2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi1yaWdodDotNXB4fS55bS1mYm94LXdyYXAgaW5wdXQsLnltLWZib3gtd3JhcCB0ZXh0YXJlYSwueW0tZnVsbCBpbnB1dCwueW0tZnVsbCB0ZXh0YXJlYXt3aWR0aDo5OCU7bWFyZ2luLXJpZ2h0Oi0zcHh9LnltLWZib3gtd3JhcCBzZWxlY3QsLnltLWZ1bGwgc2VsZWN0e3dpZHRoOjEwMCU7bWFyZ2luLXJpZ2h0Oi0zcHh9KiBodG1sIC55bS1mb3JtIC55bS1mYm94LWNoZWNrIGlucHV0e2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtib3JkZXI6MCBub25lIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fSogaHRtbCAueW0tZm9ybSAueW0tZmJveC13cmFwIC55bS1mYm94LWNoZWNrIGlucHV0e21hcmdpbi1sZWZ0OjB9aHRtbCAueW0taWUtY2xlYXJpbmd7cG9zaXRpb246c3RhdGljO2Rpc3BsYXk6YmxvY2s7XGNsZWFyOmJvdGg7d2lkdGg6MTAwJTtsaW5lLWhlaWdodDowO2ZvbnQtc2l6ZTowO21hcmdpbjotMnB4IDAgLTFlbSAxcHh9KiBodG1sIC55bS1pZS1jbGVhcmluZ3ttYXJnaW46LTJweCAwIC0xZW0gMH0ueW0tY2JveHttYXJnaW4tYm90dG9tOi0ycHh9aHRtbHttYXJnaW4tcmlnaHQ6MXB4fSogaHRtbHttYXJnaW4tcmlnaHQ6MH0ueW0tY29sM3twb3NpdGlvbjpyZWxhdGl2ZX19QG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uey55bS1jb2wxLC55bS1jb2wye2Rpc3BsYXk6aW5saW5lfS55bS1ncmlke292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmJsb2NrfSogaHRtbCAueW0tZ3JpZHtvdmVyZmxvdzp2aXNpYmxlfS55bS1nbCwueW0tZ3J7ZGlzcGxheTppbmxpbmV9LnltLWVxdWFsaXplIC55bS1nbHtmbG9hdDpsZWZ0O2Rpc3BsYXk6aW5saW5lO3BhZGRpbmctYm90dG9tOjMyNzY3cHg7bWFyZ2luLWJvdHRvbTotMzI3NjdweH0ueW0tZXF1YWxpemUgLnltLWdye2Zsb2F0OnJpZ2h0O21hcmdpbi1sZWZ0Oi01cHg7ZGlzcGxheTppbmxpbmU7cGFkZGluZy1ib3R0b206MzI3NjdweDttYXJnaW4tYm90dG9tOi0zMjc2N3B4fS5uby1pZS1wYWRkaW5nIC55bS1nbCwubm8taWUtcGFkZGluZyAueW0tZ3J7cGFkZGluZy1ib3R0b206MDttYXJnaW4tYm90dG9tOjB9KiBodG1sIC55bS1jYm94LWxlZnQsKiBodG1sIC55bS1jYm94LXJpZ2h0LCogaHRtbCAueW0tY2JveHt3b3JkLXdyYXA6YnJlYWstd29yZH0qIGh0bWwgLnltLWdib3gsKiBodG1sIC55bS1nYm94LWxlZnQsKiBodG1sIC55bS1nYm94LXJpZ2h0e3dvcmQtd3JhcDpicmVhay13b3JkO29cdmVyZmxvdzpoaWRkZW59fUBtZWRpYSBwcmludHsueW0tZ2JveCwueW0tZ2JveC1sZWZ0LC55bS1nYm94LXJpZ2h0LC55bS1jb2wze2hlaWdodDoxJX19"
+ ${BIN_ECHO} -n "${IEHACKS_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/iehacks.min.css"
+ IEHACKS_BASE64=
+
+ THEME_BASE64="LyogWWV0IEFub3RoZXIgTXVsdGljb2x1bW4gTGF5b3V0IC0gaHR0cDovL3d3dy55YW1sLmRlICovCkBpbXBvcnQgdXJsKGh0dHA6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PURyb2lkK1NlcmlmOjQwMCw0MDBpdGFsaWMsNzAwfERyb2lkK1NhbnM6NzAwKTsKQG1lZGlhIGFsbHsqe21hcmdpbjowO3BhZGRpbmc6MH1vcHRpb257cGFkZGluZy1sZWZ0Oi40ZW19c2VsZWN0e3BhZGRpbmc6MXB4fSogaHRtbCBib2R5ICp7b3ZlcmZsb3c6dmlzaWJsZX1ib2R5e2ZvbnQtc2l6ZToxMDAlO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMDAwO3RleHQtYWxpZ246bGVmdH1kaXY6dGFyZ2V0LGgxOnRhcmdldCxoMjp0YXJnZXQsaDM6dGFyZ2V0LGg0OnRhcmdldCxoNTp0YXJnZXQsaDY6dGFyZ2V0e291dGxpbmU6MCBub25lfWFydGljbGUsYXNpZGUsZGV0YWlscyxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsaGVhZGVyLG1haW4sbmF2LHNlY3Rpb24sc3VtbWFyeXtkaXNwbGF5OmJsb2NrfWF1ZGlvLGNhbnZhcyx2aWRlb3tkaXNwbGF5OmlubGluZS1ibG9ja31hdWRpbzpub3QoW2NvbnRyb2xzXSl7ZGlzcGxheTpub25lfVtoaWRkZW5de2Rpc3BsYXk6bm9uZX1odG1sey1tcy10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCV9aW5wdXRbdHlwZT1jaGVja2JveF0saW5wdXRbdHlwZT1yYWRpb117Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH1pbnB1dFt0eXBlPXNlYXJjaF17LXdlYmtpdC1hcHBlYXJhbmNlOnRleHRmaWVsZDstd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3h9aW5wdXRbdHlwZT1zZWFyY2hdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLGlucHV0W3R5cGU9c2VhcmNoXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1zdmc6bm90KDpyb290KXtvdmVyZmxvdzpoaWRkZW59ZmlndXJle21hcmdpbjowfWZpZWxkc2V0LGltZ3tib3JkZXI6MCBzb2xpZH11bCxvbCxkbHttYXJnaW46MCAwIDFlbSAxZW19bGl7bGluZS1oZWlnaHQ6MS41ZW07bWFyZ2luLWxlZnQ6LjhlbX1kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luOjAgMCAxZW0gLjhlbX1ibG9ja3F1b3Rle21hcmdpbjowIDAgMWVtIC44ZW19cXtxdW90ZXM6bm9uZX1ibG9ja3F1b3RlOmJlZm9yZSxibG9ja3F1b3RlOmFmdGVyLHE6YmVmb3JlLHE6YWZ0ZXJ7Y29udGVudDoiIjtjb250ZW50Om5vbmV9dGFibGV7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjB9LnltLWNsZWFyZml4OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6dGFibGV9LnltLWNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGg7Y29udGVudDoiLiI7ZGlzcGxheTpibG9jaztmb250LXNpemU6MDtoZWlnaHQ6MDt2aXNpYmlsaXR5OmhpZGRlbn0ueW0tY29udGFpbi1kdHtkaXNwbGF5OnRhYmxlO3RhYmxlLWxheW91dDpmaXhlZDt3aWR0aDoxMDAlfS55bS1jb250YWluLW9oe2Rpc3BsYXk6YmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9LnltLWNvbnRhaW4tZmx7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlfS55bS1jb2x1bW57ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJX0ueW0tY29sMXtmbG9hdDpsZWZ0O3dpZHRoOjIwJX0ueW0tY29sMntmbG9hdDpyaWdodDt3aWR0aDoyMCV9LnltLWNvbDN7d2lkdGg6YXV0bzttYXJnaW46MCAyMCV9LnltLWNib3h7cGFkZGluZzowIDEwcHh9LnltLWNib3gtbGVmdHtwYWRkaW5nOjAgMTBweCAwIDB9LnltLWNib3gtcmlnaHR7cGFkZGluZzowIDAgMCAxMHB4fS55bS1pZS1jbGVhcmluZ3tkaXNwbGF5Om5vbmV9LnltLWdyaWR7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6MTAwJTtsaXN0LXN0eWxlLXR5cGU6bm9uZTtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ueW0tZ2x7ZmxvYXQ6bGVmdDttYXJnaW46MH0ueW0tZ3J7ZmxvYXQ6cmlnaHQ7bWFyZ2luOjAgMCAwIC01cHh9LnltLWcyMHt3aWR0aDoyMCV9LnltLWc0MHt3aWR0aDo0MCV9LnltLWc2MHt3aWR0aDo2MCV9LnltLWc4MHt3aWR0aDo4MCV9LnltLWcyNXt3aWR0aDoyNSV9LnltLWczM3t3aWR0aDozMy4zMzMlfS55bS1nNTB7d2lkdGg6NTAlfS55bS1nNjZ7d2lkdGg6NjYuNjY2JX0ueW0tZzc1e3dpZHRoOjc1JX0ueW0tZzM4e3dpZHRoOjM4LjIlfS55bS1nNjJ7d2lkdGg6NjEuOCV9LnltLWdib3h7cGFkZGluZzowIDEwcHh9LnltLWdib3gtbGVmdHtwYWRkaW5nOjAgMTBweCAwIDB9LnltLWdib3gtcmlnaHR7cGFkZGluZzowIDAgMCAxMHB4fS55bS1lcXVhbGl6ZXtvdmVyZmxvdzpoaWRkZW59LnltLWVxdWFsaXplPltjbGFzcyo9eW0tZ117ZGlzcGxheTp0YWJsZS1jZWxsO2Zsb2F0Om5vbmU7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wfS55bS1lcXVhbGl6ZT5bY2xhc3MqPXltLWddPltjbGFzcyo9eW0tZ2JveF17cGFkZGluZy1ib3R0b206MTAwMDBweDttYXJnaW4tYm90dG9tOi0xMDAwMHB4fS55bS1mb3JtLC55bS1mb3JtIGZpZWxkc2V0e292ZXJmbG93OmhpZGRlbn0ueW0tZm9ybSBkaXZ7cG9zaXRpb246cmVsYXRpdmV9LnltLWZvcm0gbGFiZWwsLnltLWZvcm0gLnltLWxhYmVsLC55bS1mb3JtIC55bS1tZXNzYWdle3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjEuNTtkaXNwbGF5OmJsb2NrfS55bS1mb3JtIC55bS1tZXNzYWdle2NsZWFyOmJvdGh9LnltLWZvcm0gLnltLWZib3gtY2hlY2sgbGFiZWx7ZGlzcGxheTppbmxpbmV9LnltLWZvcm0gaW5wdXQsLnltLWZvcm0gdGV4dGFyZWF7Y3Vyc29yOnRleHR9LnltLWZvcm0gLnltLWZib3gtY2hlY2sgaW5wdXQsLnltLWZvcm0gaW5wdXRbdHlwZT1pbWFnZV0sLnltLWZvcm0gaW5wdXRbdHlwZT1yYWRpb10sLnltLWZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF0sLnltLWZvcm0gc2VsZWN0LC55bS1mb3JtIGxhYmVse2N1cnNvcjpwb2ludGVyfS55bS1mb3JtIHRleHRhcmVhe292ZXJmbG93OmF1dG99LnltLWZvcm0gaW5wdXQuaGlkZGVuLC55bS1mb3JtIGlucHV0W3R5cGU9aGlkZGVuXXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS55bS1mb3JtIC55bS1mYm94OmJlZm9yZSwueW0tZm9ybSAueW0tZmJveC10ZXh0OmJlZm9yZSwueW0tZm9ybSAueW0tZmJveC1zZWxlY3Q6YmVmb3JlLC55bS1mb3JtIC55bS1mYm94LWNoZWNrOmJlZm9yZSwueW0tZm9ybSAueW0tZmJveC1idXR0b246YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0ueW0tZm9ybSAueW0tZmJveDphZnRlciwueW0tZm9ybSAueW0tZmJveC10ZXh0OmFmdGVyLC55bS1mb3JtIC55bS1mYm94LXNlbGVjdDphZnRlciwueW0tZm9ybSAueW0tZmJveC1jaGVjazphZnRlciwueW0tZm9ybSAueW0tZmJveC1idXR0b246YWZ0ZXJ7Y2xlYXI6Ym90aDtjb250ZW50OiIuIjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTowO2hlaWdodDowO3Zpc2liaWxpdHk6aGlkZGVufS55bS1mb3JtIC55bS1mYm94LWNoZWNrIGlucHV0OmZvY3VzLC55bS1mb3JtIC55bS1mYm94LWNoZWNrIGlucHV0OmhvdmVyLC55bS1mb3JtIC55bS1mYm94LWNoZWNrIGlucHV0OmFjdGl2ZSwueW0tZm9ybSBpbnB1dFt0eXBlPXJhZGlvXTpmb2N1cywueW0tZm9ybSBpbnB1dFt0eXBlPXJhZGlvXTpob3ZlciwueW0tZm9ybSBpbnB1dFt0eXBlPXJhZGlvXTphY3RpdmUsLnltLWZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF06Zm9jdXMsLnltLWZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF06aG92ZXIsLnltLWZvcm0gaW5wdXRbdHlwZT1jaGVja2JveF06YWN0aXZle2JvcmRlcjowIG5vbmV9LnltLWZvcm0gaW5wdXQsLnltLWZvcm0gdGV4dGFyZWEsLnltLWZvcm0gc2VsZWN0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjcwJX0ueW0tZm9ybSAueW0tZmJveC1jaGVjayBpbnB1dCwueW0tZm9ybSBpbnB1dFt0eXBlPXJhZGlvXSwueW0tZm9ybSBpbnB1dFt0eXBlPWNoZWNrYm94XXtkaXNwbGF5OmlubGluZTttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDouNWV4O3dpZHRoOmF1dG87aGVpZ2h0OmF1dG99LnltLWZvcm0gaW5wdXRbdHlwZT1pbWFnZV17Ym9yZGVyOjA7ZGlzcGxheTppbmxpbmU7aGVpZ2h0OmF1dG87bWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOmF1dG99LnltLWZvcm0gbGFiZWwsLnltLWZvcm0gLnltLWxhYmVsey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0ueW0tZm9ybSAueW0tZmJveC1idXR0b24gaW5wdXR7ZGlzcGxheTppbmxpbmU7b3ZlcmZsb3c6dmlzaWJsZTt3aWR0aDphdXRvfS55bS1mb3JtIC55bS1pbmxpbmV7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxvYXQ6bm9uZTttYXJnaW4tcmlnaHQ6MDt3aWR0aDphdXRvO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS55bS1mYm94LXdyYXB7ZGlzcGxheTp0YWJsZTt0YWJsZS1sYXlvdXQ6Zml4ZWQ7d2lkdGg6NzAlfS55bS1mYm94LXdyYXAgaW5wdXQsLnltLWZib3gtd3JhcCB0ZXh0YXJlYSwueW0tZmJveC13cmFwIHNlbGVjdHt3aWR0aDoxMDAlfS55bS1mYm94LXdyYXAgaW5wdXRbdHlwZT1pbWFnZV17d2lkdGg6YXV0b30ueW0tZmJveC13cmFwIGlucHV0W3R5cGU9cmFkaW9dLC55bS1mYm94LXdyYXAgaW5wdXRbdHlwZT1jaGVja2JveF17ZGlzcGxheTppbmxpbmU7d2lkdGg6YXV0bzttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDouNWV4fS55bS1mYm94LXdyYXAgbGFiZWwsLnltLWZib3gtd3JhcCAueW0tbGFiZWx7ZGlzcGxheTppbmxpbmV9LnltLWZ1bGwgaW5wdXQsLnltLWZ1bGwgdGV4dGFyZWEsLnltLWZ1bGwgc2VsZWN0e3dpZHRoOjEwMCV9LnltLWZ1bGwgLnltLWZib3gtd3JhcHt3aWR0aDoxMDAlfS55bS1jb2x1bW5hciBpbnB1dCwueW0tY29sdW1uYXIgdGV4dGFyZWEsLnltLWNvbHVtbmFyIHNlbGVjdHtmbG9hdDpsZWZ0O21hcmdpbi1yaWdodDotM3B4fS55bS1jb2x1bW5hciBsYWJlbCwueW0tY29sdW1uYXIgLnltLWxhYmVse2Rpc3BsYXk6aW5saW5lO2Zsb2F0OmxlZnQ7d2lkdGg6MzAlO3otaW5kZXg6MX0ueW0tY29sdW1uYXIgLnltLWZib3gtY2hlY2sgaW5wdXQsLnltLWNvbHVtbmFyIC55bS1tZXNzYWdle21hcmdpbi1sZWZ0OjMwJX0ueW0tY29sdW1uYXIgLnltLWZib3gtd3JhcHttYXJnaW4tbGVmdDozMCU7bWFyZ2luLXJpZ2h0Oi0zcHh9LnltLWNvbHVtbmFyIC55bS1mYm94LXdyYXAgLnltLW1lc3NhZ2V7bWFyZ2luLWxlZnQ6MH0ueW0tY29sdW1uYXIgLnltLWZib3gtd3JhcCBsYWJlbHtmbG9hdDpub25lO3dpZHRoOmF1dG87ei1pbmRleDoxO21hcmdpbi1sZWZ0OjB9LnltLWNvbHVtbmFyIC55bS1mYm94LXdyYXAgaW5wdXR7bWFyZ2luLWxlZnQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX0ueW0tY29sdW1uYXIgLnltLWZib3gtY2hlY2t7cG9zaXRpb246cmVsYXRpdmV9LnltLWNvbHVtbmFyIC55bS1mYm94LWNoZWNrIGxhYmVsLC55bS1jb2x1bW5hciAueW0tZmJveC1jaGVjayAueW0tbGFiZWx7cGFkZGluZy10b3A6MH0ueW0tY29sdW1uYXIgLnltLWZib3gtY2hlY2sgaW5wdXR7dG9wOjNweH0ueW0tY29sdW1uYXIgLnltLWZib3gtYnV0dG9uIGlucHV0e2Zsb2F0Om5vbmU7bWFyZ2luLXJpZ2h0OjFlbX0ueW0tZmJveC13cmFwKy55bS1mYm94LXdyYXB7bWFyZ2luLXRvcDouNWVtfS55bS1jb2x1bW5hciBmaWVsZHNldCAueW0tZmJveC1idXR0b24sZmllbGRzZXQueW0tY29sdW1uYXIgLnltLWZib3gtYnV0dG9ue3BhZGRpbmctbGVmdDozMCV9LnltLXNraXAsLnltLWhpZGVtZSwueW0tcHJpbnR7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0zMjc2OHB4O2xlZnQ6LTMyNzY4cHh9LnltLXNraXA6Zm9jdXMsLnltLXNraXA6YWN0aXZle3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDtsZWZ0OjB9LnltLXNraXBsaW5rc3twb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi0zMjc2OHB4O3otaW5kZXg6MTAwMDt3aWR0aDoxMDAlO21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlLXR5cGU6bm9uZX0ueW0tc2tpcGxpbmtzIC55bS1za2lwOmZvY3VzLC55bS1za2lwbGlua3MgLnltLXNraXA6YWN0aXZle2xlZnQ6MzI3NjhweDtvdXRsaW5lOjAgbm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfX1AbWVkaWEgcHJpbnR7LnltLWdyaWQ+LnltLWdsLC55bS1ncmlkPi55bS1ncntvdmVyZmxvdzp2aXNpYmxlO2Rpc3BsYXk6dGFibGU7dGFibGUtbGF5b3V0OmZpeGVkfS55bS1wcmludHtwb3NpdGlvbjpzdGF0aWM7bGVmdDowfS55bS1ub3ByaW50e2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fQpAbWVkaWEgYWxsey55bS1obGlzdHt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoxZW07YmFja2dyb3VuZDojMjIyfS55bS1obGlzdCB1bHttYXJnaW46MDtwYWRkaW5nOi41ZW0gMS41ZW07ZGlzcGxheTppbmxpbmU7ZmxvYXQ6bGVmdH0ueW0taGxpc3QgdWwgbGl7ZGlzcGxheTppbmxpbmU7ZmxvYXQ6bGVmdDtmb250LXNpemU6MWVtO2xpbmUtaGVpZ2h0OjE7bGlzdC1zdHlsZS10eXBlOm5vbmU7bWFyZ2luOjAgLjI1ZW0gMCAwO3BhZGRpbmc6MH0ueW0taGxpc3QgdWwgbGkgYSwueW0taGxpc3QgdWwgbGkgc3Ryb25ne2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2FhYTtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxZW07bGluZS1oZWlnaHQ6MmVtO3BhZGRpbmc6MCAuNWVtO2ZvbnQtd2VpZ2h0OjQwMDt0ZXh0LWRlY29yYXRpb246bm9uZTt0ZXh0LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuNSk7d2lkdGg6YXV0b30ueW0taGxpc3QgdWwgbGkgYTpmb2N1cywueW0taGxpc3QgdWwgbGkgYTpob3ZlciwueW0taGxpc3QgdWwgbGkgYTphY3RpdmV7Y29sb3I6I2NjYztiYWNrZ3JvdW5kOiM2NjY7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4yNSk7Ym9yZGVyLXJhZGl1czouMmVtO3RleHQtZGVjb3JhdGlvbjpub25lO291dGxpbmU6MCBub25lfS55bS1obGlzdCB1bCBsaS5hY3RpdmV7YmFja2dyb3VuZDojNjY2O2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMyk7Ym9yZGVyLXJhZGl1czouMmVtO2NvbG9yOiNmZmZ9LnltLWhsaXN0IHVsIGxpLmFjdGl2ZSBzdHJvbmcsLnltLWhsaXN0IHVsIGxpLmFjdGl2ZSBhOmZvY3VzLC55bS1obGlzdCB1bCBsaS5hY3RpdmUgYTpob3ZlciwueW0taGxpc3QgdWwgbGkuYWN0aXZlIGE6YWN0aXZle2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0ueW0tc2VhcmNoZm9ybXtmbG9hdDpyaWdodDtkaXNwbGF5OmlubGluZTtsaW5lLWhlaWdodDoyO3BhZGRpbmc6LjVlbSAxLjVlbX0ueW0tc2VhcmNoZm9ybSAueW0tc2VhcmNoZmllbGR7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDojZmZmO2xpbmUtaGVpZ2h0OjE7cGFkZGluZzouMjVlbTt3aWR0aDoxMmVtO2JvcmRlcjpzb2xpZCAxcHggIzg4ODtib3JkZXI6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEpO291dGxpbmU6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwwLDAsLjIpO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggM3B4IHJnYmEoMCwwLDAsLjIpfS55bS1zZWFyY2hmb3JtIC55bS1zZWFyY2hidXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZDojNWY1ZjVmO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMik7Ym9yZGVyLXJhZGl1czouMmVtO2NvbG9yOiNmZmY7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjFlbTtsaW5lLWhlaWdodDoxLjI1O3BhZGRpbmc6LjI1ZW07Ym9yZGVyOnNvbGlkIDFweCB0cmFuc3BhcmVudDt0ZXh0LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuNSl9fQpAbWVkaWEgYWxse2h0bWwgKntmb250LXNpemU6MTAwJX10ZXh0YXJlYSxwcmUsY29kZSxrYmQsc2FtcCx2YXIsdHR7Zm9udC1mYW1pbHk6Q29uc29sYXMsIkx1Y2lkYSBDb25zb2xlIiwiQW5kYWxlIE1vbm8iLCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8iLCJDb3VyaWVyIE5ldyIsQ291cmllcn1ib2R5e2ZvbnQtZmFtaWx5OiJEcm9pZCBTZXJpZiIsR2VvcmdpYSwiVGltZXMgTmV3IFJvbWFuIixUaW1lcyxzZXJpZjtmb250LXNpemU6ODcuNSU7Y29sb3I6IzQ0NH1oMSxoMixoMyxoNCxoNSxoNntmb250LWZhbWlseToiRHJvaWQgU2FucyIsQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiMxNjFlMjE7bWFyZ2luOjB9aDF7Zm9udC1zaXplOjM0Mi44NTcxNCU7bGluZS1oZWlnaHQ6Ljg3NTttYXJnaW46MCAwIC40Mzc1ZW0gMH1oMntmb250LXNpemU6MjI4LjU3MTQzJTtsaW5lLWhlaWdodDoxLjMxMjU7bWFyZ2luOjAgMCAuNjU2MjVlbSAwfWgze2ZvbnQtc2l6ZToxNzEuNDI4NTclO2xpbmUtaGVpZ2h0Oi44NzU7bWFyZ2luOjAgMCAuODc1ZW0gMH1oNHtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxO21hcmdpbjowIDAgMWVtIDB9aDV7Zm9udC1zaXplOjEyOC41NzE0MyU7bGluZS1oZWlnaHQ6MS4xNjY2NzttYXJnaW46MCAwIDEuMTY2NjdlbSAwfWg2e2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxLjU7bWFyZ2luOjAgMCAxLjVlbSAwfXVsLG9sLGRse2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW46MCAwIDEuNWVtIDB9dWx7bGlzdC1zdHlsZS10eXBlOmRpc2N9b2x7bGlzdC1zdHlsZS10eXBlOmRlY2ltYWx9dWwgdWx7bGlzdC1zdHlsZS10eXBlOmNpcmNsZTttYXJnaW4tdG9wOjB9b2wgb2x7bGlzdC1zdHlsZS10eXBlOmxvd2VyLWxhdGluO21hcmdpbi10b3A6MH1vbCB1bHtsaXN0LXN0eWxlLXR5cGU6Y2lyY2xlO21hcmdpbi10b3A6MH1saXtmb250LXNpemU6MTAwJTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLWxlZnQ6MS4yZW19ZHR7Zm9udC13ZWlnaHQ6NzAwfWRke21hcmdpbjowIDAgMS41ZW0gLjhlbX1we2ZvbnQtc2l6ZToxMDAlO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW46MCAwIDEuNWVtIDB9YmxvY2txdW90ZSxjaXRlLHF7Zm9udC1mYW1pbHk6IkRyb2lkIFNlcmlmIixHZW9yZ2lhLCJUaW1lcyBOZXcgUm9tYW4iLFRpbWVzLHNlcmlmO2ZvbnQtc3R5bGU6aXRhbGljfWJsb2NrcXVvdGV7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojNjY2O21hcmdpbjoxLjVlbSAwIDAgMS41ZW19c3Ryb25nLGJ7Zm9udC13ZWlnaHQ6NzAwfWVtLGl7Zm9udC1zdHlsZTppdGFsaWN9Ymlne2ZvbnQtc2l6ZToxMTQuMjg1NzElO2xpbmUtaGVpZ2h0OjEuMzEyNX1zbWFsbHtmb250LXNpemU6ODUuNzE0MjklO2xpbmUtaGVpZ2h0OjEuNzV9cHJlLGNvZGUsa2JkLHR0LHNhbXAsdmFye2ZvbnQtc2l6ZToxMDAlfXByZXtmb250LXNpemU6MTAwJTtsaW5lLWhlaWdodDoxLjU7bWFyZ2luOjAgMCAxLjVlbSAwO3doaXRlLXNwYWNlOnByZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDt3b3JkLXdyYXA6YnJlYWstd29yZH1wcmUsY29kZXtjb2xvcjojODAwfWtiZCxzYW1wLHZhcix0dHtjb2xvcjojNjY2O2ZvbnQtd2VpZ2h0OjcwMH12YXIsZGZue2ZvbnQtc3R5bGU6aXRhbGljfWFjcm9ueW0sYWJicntib3JkZXItYm90dG9tOjFweCAjYWFhIGRvdHRlZDtmb250LXZhcmlhbnQ6c21hbGwtY2FwcztsZXR0ZXItc3BhY2luZzouMDdlbTtjdXJzb3I6aGVscH1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdXB7dG9wOi0uNWVtfXN1Yntib3R0b206LS4yNWVtfW1hcmt7YmFja2dyb3VuZDp5ZWxsb3c7Y29sb3I6YmxhY2t9aHJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O21hcmdpbjowIDAgLjc1ZW0gMDtwYWRkaW5nOjAgMCAuNjc4NTdlbSAwO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4ICNlZWUgc29saWR9YXtjb2xvcjojNGQ4N2M3O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9YTphY3RpdmV7b3V0bGluZTpub25lfWE6aG92ZXIsYTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiM0ZDg3Yzc7Y29sb3I6d2hpdGU7dGV4dC1kZWNvcmF0aW9uOm5vbmV9aW1nLGZpZ3VyZXttYXJnaW46MH0uZmxleGlibGV7bWFyZ2luLWJvdHRvbToxLjVlbTttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b30qIGh0bWwgLmZsZXhpYmxle3dpZHRoOjk4JX0uYm9yZGVyZWR7bWFyZ2luLWJvdHRvbToxLjVlbTtib3JkZXI6MnB4ICNlZWUgc29saWQ7Ym9yZGVyOjJweCB3aGl0ZSBzb2xpZDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDNweCByZ2JhKDAsMCwwLC4yNSk7Ym94LXNoYWRvdzowIDAgM3B4IHJnYmEoMCwwLDAsLjI1KX0uaGlnaGxpZ2h0e2NvbG9yOiNjMzB9LmRpbW1lZHtjb2xvcjojODg4fS5ib3h7Ym9yZGVyLXJhZGl1czouM2VtO2JvcmRlci13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci1jb2xvcjojODg4O2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zKTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMXB4IDFweCAzcHggcmdiYSgwLDAsMCwuMik7Ym94LXNoYWRvdzppbnNldCAxcHggMXB4IDNweCByZ2JhKDAsMCwwLC4yKTtjb2xvcjojNDQ0O2NvbG9yOnJnYmEoMCwwLDAsLjgpO3BhZGRpbmc6MS40Mjg1N2VtO21hcmdpbjowIDAgMS41ZW0gMH0uYm94Pio6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LmxhYmVse2ZvbnQtZmFtaWx5OlZlcmRhbmEsR2VuZXZhLHNhbnMtc2VyaWY7cGFkZGluZzoxcHggNnB4IDJweDtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOiMwNkM7Y29sb3I6I2ZmZjtmb250LXNpemU6MTBweDtsaW5lLWhlaWdodDoxMnB4fS5pbmZve2JhY2tncm91bmQ6I2Y0ZjRmNH0uc3VjY2Vzc3tiYWNrZ3JvdW5kOiM4Yzh9Lndhcm5pbmd7YmFja2dyb3VuZDojY2M4fS5lcnJvcntiYWNrZ3JvdW5kOiNjODh9LmZsb2F0LWxlZnR7ZmxvYXQ6bGVmdDtkaXNwbGF5OmlubGluZTttYXJnaW46MCAxZW0gMS41ZW0gMH0uZmxvYXQtcmlnaHR7ZmxvYXQ6cmlnaHQ7ZGlzcGxheTppbmxpbmU7bWFyZ2luOjAgMCAxLjVlbSAxZW19LmNlbnRlcntkaXNwbGF5OmJsb2NrO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowIGF1dG8gMS41ZW0gYXV0b310YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtjb2xvcjojNDQ0O2JvcmRlci10b3A6MXB4ICNjY2Mgc29saWQ7Ym9yZGVyLWJvdHRvbToxcHggI2NjYyBzb2xpZDttYXJnaW46MCAwIDEuMzU3MTRlbSAwfXRhYmxlLm5hcnJvd3ttYXJnaW46MCAwIDEuNDI4NTdlbSAwfXRhYmxlLm5hcnJvdyB0aCx0YWJsZS5uYXJyb3cgdGR7cGFkZGluZzowIC41ZW07bGluZS1oZWlnaHQ6MS40Mjg1N310YWJsZS5maXhlZHt0YWJsZS1sYXlvdXQ6Zml4ZWR9dGFibGUuYm9yZGVydGFibGV7Ym9yZGVyOjFweCAjY2NjIHNvbGlkfXRhYmxlLmJvcmRlcnRhYmxlIHRoZWFkIHRoe2JhY2tncm91bmQ6I2UwZTBlMDtib3JkZXItcmlnaHQ6MXB4ICNjY2Mgc29saWQ7Ym9yZGVyLWJvdHRvbToxcHggI2NjYyBzb2xpZH10YWJsZS5ib3JkZXJ0YWJsZSB0Ym9keSB0aFtzY29wZT0icm93Il17YmFja2dyb3VuZDojZjBmMGYwfXRhYmxlLmJvcmRlcnRhYmxlIHRib2R5IHRoe2JvcmRlci1yaWdodDoxcHggc29saWQgI2NjY310YWJsZS5ib3JkZXJ0YWJsZSB0Ym9keSB0ZHtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNjY2N9Y2FwdGlvbntmb250LXZhcmlhbnQ6c21hbGwtY2Fwc310aCx0ZHtsaW5lLWhlaWdodDoxLjVlbTt2ZXJ0aWNhbC1hbGlnbjp0b3A7cGFkZGluZzouNzE0MjllbSAuNWVtfXRoICo6Zmlyc3QtY2hpbGQsdGQgKjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9dGgubm93cmFwLHRkLm5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9dGhlYWQgdGh7dGV4dC1hbGlnbjpsZWZ0O2NvbG9yOiMwMDA7Ym9yZGVyLWJvdHRvbToycHggIzAwMCBzb2xpZH10Ym9keSB0aHt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjY310Ym9keSB0ZHt0ZXh0LWFsaWduOmxlZnQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI2NjY310Ym9keSB0cjpob3ZlciB0aCx0Ym9keSB0cjpob3ZlciB0ZHtiYWNrZ3JvdW5kOiNmOGY4Zjh9fQpAbWVkaWEgc2NyZWVue2JvZHl7b3ZlcmZsb3cteTpzY3JvbGx9LnltLXdyYXBwZXJ7bWluLXdpZHRoOjc2MHB4O21heC13aWR0aDo4MGVtO21hcmdpbjowIGF1dG99LnltLXdib3h7cGFkZGluZzoxMHB4fWhlYWRlcntiYWNrZ3JvdW5kOiM0NDQ7Y29sb3I6I2NjYztwYWRkaW5nOjEuNWVtfWhlYWRlciBoMXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiNmZmZ9bmF2e2JhY2tncm91bmQ6IzIyMn1tYWlue3BhZGRpbmc6MS41ZW0gMCAwIDB9Zm9vdGVye21hcmdpbjowO2JhY2tncm91bmQ6I2VlZTtjb2xvcjojNDQ0O3BhZGRpbmc6MS41ZW19Zm9vdGVyIHB7bWFyZ2luOjB9LnltLWNvbHVtbntkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nLXJpZ2h0OjM0MHB4O3dpZHRoOmF1dG99LnltLWNvbDF7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlfS55bS1jb2wze3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7d2lkdGg6MzQwcHg7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6LTM0MHB4fS55bS1jb2wxIC55bS1jYm94e3BhZGRpbmc6MCAuNzVlbSAwIDEuNWVtfS55bS1jb2wzIC55bS1jYm94e3BhZGRpbmc6MCAyMHB4IDAgMTJweH0ueW0tZ2JveHtwYWRkaW5nOjAgMS41ZW0gMCAwfS55bS1za2lwbGlua3MgYS55bS1za2lwOmZvY3VzLC55bS1za2lwbGlua3MgYS55bS1za2lwOmFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQ6IzMzMztib3JkZXItYm90dG9tOjFweCAjMDAwIHNvbGlkO3BhZGRpbmc6MTBweCAwO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lfX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjApey55bS13cmFwcGVye21pbi13aWR0aDowfX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2MHB4KXsubGluZWFyaXplLWxldmVsLTEsLmxpbmVhcml6ZS1sZXZlbC0xPltjbGFzcyo9InltLWMiXSwubGluZWFyaXplLWxldmVsLTE+W2NsYXNzKj0ieW0tZyJde2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6YXV0byFpbXBvcnRhbnR9LmxpbmVhcml6ZS1sZXZlbC0xPltjbGFzcyo9InltLWMiXT5bY2xhc3MqPSJ5bS1jYm94Il0sLmxpbmVhcml6ZS1sZXZlbC0xPltjbGFzcyo9InltLWciXT5bY2xhc3MqPSJ5bS1nYm94Il17bWFyZ2luOjA7cGFkZGluZzowO292ZXJmbG93OmhpZGRlbn1uYXYgLnltLWhsaXN0IHVse3BhZGRpbmctcmlnaHQ6MTBweH0ueW0tc2VhcmNoZm9ybXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bztwYWRkaW5nLXJpZ2h0OjEwcHg7dGV4dC1hbGlnbjpyaWdodH0ueW0tc2VhcmNoZm9ybSBpbnB1dFt0eXBlPSJzZWFyY2giXXt3aWR0aDoxNCV9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpey55bS13Ym94e3BhZGRpbmc6MH1oZWFkZXJ7cGFkZGluZzouNzVlbSAxMHB4fWhlYWRlciBoMXtmb250LXNpemU6MS41ZW07bGluZS1oZWlnaHQ6MWVtO21hcmdpbjowfWZvb3RlcixtYWluLC55bS1zZWFyY2hmb3JtLG5hdiAueW0taGxpc3QgdWx7cGFkZGluZy1sZWZ0OjEwcHg7cGFkZGluZy1yaWdodDoxMHB4fS5saW5lYXJpemUtbGV2ZWwtMiwubGluZWFyaXplLWxldmVsLTI+W2NsYXNzKj0ieW0tYyJdLC5saW5lYXJpemUtbGV2ZWwtMj5bY2xhc3MqPSJ5bS1nIl17ZGlzcGxheTpibG9jaztmbG9hdDpub25lO3BhZGRpbmc6MDttYXJnaW46MDt3aWR0aDphdXRvIWltcG9ydGFudH0ubGluZWFyaXplLWxldmVsLTI+W2NsYXNzKj0ieW0tYyJdPltjbGFzcyo9InltLWNib3giXSwubGluZWFyaXplLWxldmVsLTI+W2NsYXNzKj0ieW0tZyJdPltjbGFzcyo9InltLWdib3giXXttYXJnaW46MDtwYWRkaW5nOjA7b3ZlcmZsb3c6aGlkZGVufS55bS1zZWFyY2hmb3JtLG5hdiAueW0taGxpc3QgdWwsbmF2IC55bS1obGlzdCBsaXtkaXNwbGF5OmJsb2NrO2Zsb2F0Om5vbmU7d2lkdGg6YXV0bzt0ZXh0LWFsaWduOmxlZnR9LnltLXNlYXJjaGZvcm0gaW5wdXRbdHlwZT0ic2VhcmNoIl17d2lkdGg6NzUlfX0KQG1lZGlhIHByaW50e2JvZHl7Zm9udC1zaXplOjEwcHQ7cGFkZGluZzowIDVweH1uYXYsLnltLXNlYXJjaGZvcm17ZGlzcGxheTpub25lfWgxLGgyLGgzLGg0LGg1LGg2e3BhZ2UtYnJlYWstYWZ0ZXI6YXZvaWR9fQ=="
+ ${BIN_ECHO} -n "${THEME_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/theme.css"
+ THEME_BASE64=
+
+ ${BIN_CAT} <> "${FOLDER}/theme.css"
+/* Individual customizations */
+.ym-wrapper {
+ max-width: 74em;
+}
+header {
+ background: #fff;
+ padding: 0em;
+ background: rgba(0,0,0,0)
+ url("logo_72x72.png")
+ no-repeat scroll left center;
+ padding-left: 84px;
+ height: 72px;
+ margin-bottom: 6px;
+}
+header h1 {
+ padding-top: 7px;
+ color: #000;
+}
+h1 {
+ margin: 0;
+}
+.ym-hlist {
+ border-top: 1px solid;
+ background: #fff;
+ border-bottom: 1px solid;
+}
+.ym-hlist ul li a:focus,
+.ym-hlist ul li a:hover,
+.ym-hlist ul li a:active {
+ background: rgba(0, 0, 0, 0.25);
+}
+.ym-hlist ul li.active strong,
+.ym-hlist ul li.active a:focus,
+.ym-hlist ul li.active a:hover,
+.ym-hlist ul li.active a:active {
+ color: #fff;
+}
+.ym-hlist ul li.active {
+ background: rgba(0, 0, 0, 0.3);
+}
+.ym-hlist ul li a,
+.ym-hlist ul li strong {
+ color: #000;
+ text-shadow: 0 0px 0px;
+}
+.ym-hlist ul li a:focus,
+.ym-hlist ul li a:hover,
+.ym-hlist ul li a:active {
+ color: #fff;
+}
+.cmd li {
+ list-style-type: "$ ";
+}
+.file li {
+ list-style-image: url('file.png');
+}
+footer {
+ border-top: 1px solid;
+ background: #fff;
+ color: #000;
+ padding: 0em;
+}
+footer p {
+ padding-top: 7px;
+}
+EOF
+
+ #-------------------------------------------------------------------------------
+ # Create the JS files (HTML5 support for older Microsoft Internet Explorer
+ # and skiplink support for Apple Safari).
+ # (Skiplinks actually seems to be broken, eventually the next YAML release
+ # will fix this?)
+ #-------------------------------------------------------------------------------
+ HTML5SHIV_BASE64="LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjMgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCiFmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoInAiKSxkPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8YS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGMuaW5uZXJIVE1MPSJ4PHN0eWxlPiIrYisiPC9zdHlsZT4iLGQuaW5zZXJ0QmVmb3JlKGMubGFzdENoaWxkLGQuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gZCgpe3ZhciBhPXQuZWxlbWVudHM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhP2Euc3BsaXQoIiAiKTphfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYz10LmVsZW1lbnRzOyJzdHJpbmciIT10eXBlb2YgYyYmKGM9Yy5qb2luKCIgIikpLCJzdHJpbmciIT10eXBlb2YgYSYmKGE9YS5qb2luKCIgIikpLHQuZWxlbWVudHM9YysiICIrYSxqKGIpfWZ1bmN0aW9uIGYoYSl7dmFyIGI9c1thW3FdXTtyZXR1cm4gYnx8KGI9e30scisrLGFbcV09cixzW3JdPWIpLGJ9ZnVuY3Rpb24gZyhhLGMsZCl7aWYoY3x8KGM9YiksbClyZXR1cm4gYy5jcmVhdGVFbGVtZW50KGEpO2R8fChkPWYoYykpO3ZhciBlO3JldHVybiBlPWQuY2FjaGVbYV0/ZC5jYWNoZVthXS5jbG9uZU5vZGUoKTpwLnRlc3QoYSk/KGQuY2FjaGVbYV09ZC5jcmVhdGVFbGVtKGEpKS5jbG9uZU5vZGUoKTpkLmNyZWF0ZUVsZW0oYSksIWUuY2FuSGF2ZUNoaWxkcmVufHxvLnRlc3QoYSl8fGUudGFnVXJuP2U6ZC5mcmFnLmFwcGVuZENoaWxkKGUpfWZ1bmN0aW9uIGgoYSxjKXtpZihhfHwoYT1iKSxsKXJldHVybiBhLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtjPWN8fGYoYSk7Zm9yKHZhciBlPWMuZnJhZy5jbG9uZU5vZGUoKSxnPTAsaD1kKCksaT1oLmxlbmd0aDtpPmc7ZysrKWUuY3JlYXRlRWxlbWVudChoW2ddKTtyZXR1cm4gZX1mdW5jdGlvbiBpKGEsYil7Yi5jYWNoZXx8KGIuY2FjaGU9e30sYi5jcmVhdGVFbGVtPWEuY3JlYXRlRWxlbWVudCxiLmNyZWF0ZUZyYWc9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50LGIuZnJhZz1iLmNyZWF0ZUZyYWcoKSksYS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGMpe3JldHVybiB0LnNoaXZNZXRob2RzP2coYyxhLGIpOmIuY3JlYXRlRWxlbShjKX0sYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50PUZ1bmN0aW9uKCJoLGYiLCJyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1mLmNsb25lTm9kZSgpLGM9bi5jcmVhdGVFbGVtZW50O2guc2hpdk1ldGhvZHMmJigiK2QoKS5qb2luKCkucmVwbGFjZSgvW1x3XC06XSsvZyxmdW5jdGlvbihhKXtyZXR1cm4gYi5jcmVhdGVFbGVtKGEpLGIuZnJhZy5jcmVhdGVFbGVtZW50KGEpLCdjKCInK2ErJyIpJ30pKyIpO3JldHVybiBufSIpKHQsYi5mcmFnKX1mdW5jdGlvbiBqKGEpe2F8fChhPWIpO3ZhciBkPWYoYSk7cmV0dXJuIXQuc2hpdkNTU3x8a3x8ZC5oYXNDU1N8fChkLmhhc0NTUz0hIWMoYSwiYXJ0aWNsZSxhc2lkZSxkaWFsb2csZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGhlYWRlcixoZ3JvdXAsbWFpbixuYXYsc2VjdGlvbntkaXNwbGF5OmJsb2NrfW1hcmt7YmFja2dyb3VuZDojRkYwO2NvbG9yOiMwMDB9dGVtcGxhdGV7ZGlzcGxheTpub25lfSIpKSxsfHxpKGEsZCksYX12YXIgayxsLG09IjMuNy4zIixuPWEuaHRtbDV8fHt9LG89L148fF4oPzpidXR0b258bWFwfHNlbGVjdHx0ZXh0YXJlYXxvYmplY3R8aWZyYW1lfG9wdGlvbnxvcHRncm91cCkkL2kscD0vXig/OmF8Ynxjb2RlfGRpdnxmaWVsZHNldHxoMXxoMnxoM3xoNHxoNXxoNnxpfGxhYmVsfGxpfG9sfHB8cXxzcGFufHN0cm9uZ3xzdHlsZXx0YWJsZXx0Ym9keXx0ZHx0aHx0cnx1bCkkL2kscT0iX2h0bWw1c2hpdiIscj0wLHM9e307IWZ1bmN0aW9uKCl7dHJ5e3ZhciBhPWIuY3JlYXRlRWxlbWVudCgiYSIpO2EuaW5uZXJIVE1MPSI8eHl6PjwveHl6PiIsaz0iaGlkZGVuImluIGEsbD0xPT1hLmNoaWxkTm9kZXMubGVuZ3RofHxmdW5jdGlvbigpe2IuY3JlYXRlRWxlbWVudCgiYSIpO3ZhciBhPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYS5jbG9uZU5vZGV8fCJ1bmRlZmluZWQiPT10eXBlb2YgYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50fHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRWxlbWVudH0oKX1jYXRjaChjKXtrPSEwLGw9ITB9fSgpO3ZhciB0PXtlbGVtZW50czpuLmVsZW1lbnRzfHwiYWJiciBhcnRpY2xlIGFzaWRlIGF1ZGlvIGJkaSBjYW52YXMgZGF0YSBkYXRhbGlzdCBkZXRhaWxzIGRpYWxvZyBmaWdjYXB0aW9uIGZpZ3VyZSBmb290ZXIgaGVhZGVyIGhncm91cCBtYWluIG1hcmsgbWV0ZXIgbmF2IG91dHB1dCBwaWN0dXJlIHByb2dyZXNzIHNlY3Rpb24gc3VtbWFyeSB0ZW1wbGF0ZSB0aW1lIHZpZGVvIix2ZXJzaW9uOm0sc2hpdkNTUzpuLnNoaXZDU1MhPT0hMSxzdXBwb3J0c1Vua25vd25FbGVtZW50czpsLHNoaXZNZXRob2RzOm4uc2hpdk1ldGhvZHMhPT0hMSx0eXBlOiJkZWZhdWx0IixzaGl2RG9jdW1lbnQ6aixjcmVhdGVFbGVtZW50OmcsY3JlYXRlRG9jdW1lbnRGcmFnbWVudDpoLGFkZEVsZW1lbnRzOmV9O2EuaHRtbDU9dCxqKGIpLCJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cyYmKG1vZHVsZS5leHBvcnRzPXQpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxkb2N1bWVudCk7"
+ ${BIN_ECHO} -n "${HTML5SHIV_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/html5shiv.min.js"
+ HTML5SHIV_BASE64=
+
+ FOCUSFIX_BASE64="LyogWWV0IEFub3RoZXIgTXVsdGljb2x1bW4gTGF5b3V0IC0gaHR0cDovL3d3dy55YW1sLmRlICovCihmdW5jdGlvbigpe3ZhciBZQU1MX2ZvY3VzRml4PXtza2lwQ2xhc3M6J3ltLXNraXAnLGluaXQ6ZnVuY3Rpb24oKXt2YXIgdXNlckFnZW50PW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTt2YXIgaXNfd2Via2l0PXVzZXJBZ2VudC5pbmRleE9mKCd3ZWJraXQnKT4tMTt2YXIgaXNfaWU9dXNlckFnZW50LmluZGV4T2YoJ21zaWUnKT4tMTtpZihpc193ZWJraXR8fGlzX2llKXt2YXIgYm9keT1kb2N1bWVudC5ib2R5LGhhbmRsZXI9WUFNTF9mb2N1c0ZpeC5jbGljaztpZihib2R5LmFkZEV2ZW50TGlzdGVuZXIpe2JvZHkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGhhbmRsZXIsITEpfWVsc2UgaWYoYm9keS5hdHRhY2hFdmVudCl7Ym9keS5hdHRhY2hFdmVudCgnb25jbGljaycsaGFuZGxlcil9fX0sdHJpbTpmdW5jdGlvbihzdHIpe3JldHVybiBzdHIucmVwbGFjZSgvXlxzXHMqLywnJykucmVwbGFjZSgvXHNccyokLywnJyl9LGNsaWNrOmZ1bmN0aW9uKGUpe2U9ZXx8d2luZG93LmV2ZW50O3ZhciB0YXJnZXQ9ZS50YXJnZXR8fGUuc3JjRWxlbWVudDt2YXIgYT10YXJnZXQuY2xhc3NOYW1lLnNwbGl0KCcgJyk7Zm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciBjbHM9WUFNTF9mb2N1c0ZpeC50cmltKGFbaV0pO2lmKGNscz09PVlBTUxfZm9jdXNGaXguc2tpcENsYXNzKXtZQU1MX2ZvY3VzRml4LmZvY3VzKHRhcmdldCk7YnJlYWt9fX0sZm9jdXM6ZnVuY3Rpb24obGluayl7aWYobGluay5ocmVmKXt2YXIgaHJlZj1saW5rLmhyZWYsaWQ9aHJlZi5zdWJzdHIoaHJlZi5pbmRleE9mKCcjJykrMSksdGFyZ2V0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtpZih0YXJnZXQpe3RhcmdldC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKTt0YXJnZXQuZm9jdXMoKX19fX07WUFNTF9mb2N1c0ZpeC5pbml0KCl9KSgp"
+ ${BIN_ECHO} -n "${FOCUSFIX_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/yaml-focusfix.min.js"
+ FOCUSFIX_BASE64=
+
+ #-------------------------------------------------------------------------------
+ # Create robots.txt for later use on a public web server.
+ #-------------------------------------------------------------------------------
+ ${BIN_CAT} < "${FOLDER}/robots.txt"
+User-Agent: *
+Disallow: /
+EOF
+
+
+ #-------------------------------------------------------------------------------
+ # Create file.png for indivualized unordered lists.
+ #-------------------------------------------------------------------------------
+ FILE_BASE64="iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWBJREFUeNqEUj1LxEAQnd1MVA4lyIEWx6UIKEGUExGsbC3tLfwJ/hT/g7VlCnubqxXBwg/Q4hQP/LhKL5nZuBsvuGfW5MGyuzM7jzdvVuR5DgYnZ+f99ai7Vt5t9K9unu4HLweI3qWYxI6PDosdy0fhcntxO44CcOBzPA7mfEyuHwf7ntQk4jcnywOxIlfxOCNYaLVgb6cXbkTdhJXq2SIlNMC0xIqhHczDbi8OVzpLSUa0WebRfmigLHqj1EcPZnwf7gbDIrYVRyEinurj6jTBHyI7pqVrFQqEbt6TEmZ9v1NRAJNC1xTYxIQh/MmRUlmFQE3qWOW1nqB2TWk1/3tgJV0waVvkFIEeZbHq4ElyKzAmEXOx6gnEVJuWBzmkRJBRPYGZBDsVaOlpSgVJE2yVaAe/0kx/3azBRO0VsbMFZE3CDSZKweZfYIVg+DZ6v7h9GDVOwZPw/PoxKu/fAgwALbDAXf7DdQkAAAAASUVORK5CYII="
+ ${BIN_ECHO} -n "${FILE_BASE64}" | ${BIN_BASE64} --decode > "${FOLDER}/file.png"
+ FILE_BASE64=
+
+ #-------------------------------------------------------------------------------
+ # Create text file with usage of the script.
+ #-------------------------------------------------------------------------------
+ # SC2086: a unix command should never contains spaces!
+ ./${0} -h > "${FOLDER}/ios2html.txt"
+}
+
+#=== FUNCTION ==================================================================
+# NAME: plist_bin2xml
+# DESCRIPTION: Converts a binary or xml plist on macOS into the report folder
+# or converts a binary plist on Linux into xml or just copy
+# it if already xml.
+# PARAMETER 1: string (source)
+# PARAMETER 2: string (destination)
+#===============================================================================
+plist_bin2xml () {
+ case "${OS_NAME}" in
+ Darwin) ${BIN_PLUTIL} -convert xml1 "${1}" -o "${2}"
+ ;;
+ Linux|FreeBSD) if [ "$( ${BIN_FILE} --brief "${1}" )" = "Apple binary property list" ] ; then
+ ${BIN_PLISTUTIL} --infile "${1}" --outfile "${2}"
+ else
+ ${BIN_CP} "${1}" "${2}"
+ fi
+ ;;
+ *) error_exit "your os is not supported (yet)" 206
+ ;;
+ esac
+}
+
+#-------------------------------------------------------------------------------
+# Global header template for the simple template engine.
+#-------------------------------------------------------------------------------
+# SC2034: all "unused" vars are verified!
+# zsh: readonly is not valid in this context:
+HEADER=$( ${BIN_CAT} <<'EOF'
+
+
+
+
+
+ ${HEAD_TITLE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${HEADER_SUBTITLE}
+
+
+
+EOF
+)
+
+#-------------------------------------------------------------------------------
+# Partial template for the case information for the simple template engine.
+#-------------------------------------------------------------------------------
+CASE_INFORMATION=$( ${BIN_CAT} <<'EOF'
+
+EOF
+)
+
+#-------------------------------------------------------------------------------
+# Global footer template for the simple template engine.
+#-------------------------------------------------------------------------------
+FOOTER=$( ${BIN_CAT} <<'EOF'
+
+
+
+
+
+
+
+EOF
+)
+
+readonly TEMPLATE_ENGINE_LOADED="true"
+
+if [ "${DEBUG}" = "on" ] ; then
+ ${BIN_PRINTF} "INFO: template_engine.sh loaded.\\n" 1>&2
+fi
+# Do not use "exit" at the end of a sourced library!
\ No newline at end of file