diff --git a/lib/libesp32_epdiy/doc/Doxyfile b/lib/libesp32_epdiy/doc/Doxyfile deleted file mode 100755 index ea2698ecf..000000000 --- a/lib/libesp32_epdiy/doc/Doxyfile +++ /dev/null @@ -1,338 +0,0 @@ -# Doxyfile 1.8.17 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "EPDiy" -PROJECT_NUMBER = -PROJECT_BRIEF = -PROJECT_LOGO = -OUTPUT_DIRECTORY = -CREATE_SUBDIRS = NO -ALLOW_UNICODE_NAMES = NO -OUTPUT_LANGUAGE = English -OUTPUT_TEXT_DIRECTION = None -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -JAVADOC_BANNER = NO -QT_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 4 -ALIASES = -TCL_SUBST = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -OPTIMIZE_FOR_FORTRAN = NO -OPTIMIZE_OUTPUT_VHDL = NO -OPTIMIZE_OUTPUT_SLICE = NO -EXTENSION_MAPPING = -MARKDOWN_SUPPORT = YES -TOC_INCLUDE_HEADINGS = 5 -AUTOLINK_SUPPORT = YES -BUILTIN_STL_SUPPORT = NO -CPP_CLI_SUPPORT = NO -SIP_SUPPORT = NO -IDL_PROPERTY_SUPPORT = YES -DISTRIBUTE_GROUP_DOC = NO -GROUP_NESTED_COMPOUNDS = NO -SUBGROUPING = YES -INLINE_GROUPED_CLASSES = NO -INLINE_SIMPLE_STRUCTS = NO -TYPEDEF_HIDES_STRUCT = NO -LOOKUP_CACHE_SIZE = 0 -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_PRIV_VIRTUAL = NO -EXTRACT_PACKAGE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -EXTRACT_ANON_NSPACES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -HIDE_COMPOUND_REFERENCE= NO -SHOW_INCLUDE_FILES = YES -SHOW_GROUPED_MEMB_INC = NO -FORCE_LOCAL_INCLUDES = NO -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_MEMBERS_CTORS_1ST = NO -SORT_GROUP_NAMES = NO -SORT_BY_SCOPE_NAME = NO -STRICT_PROTO_MATCHING = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_FILES = YES -SHOW_NAMESPACES = YES -FILE_VERSION_FILTER = -LAYOUT_FILE = -CITE_BIB_FILES = -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_AS_ERROR = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../src/epd_driver/include/ -INPUT_ENCODING = UTF-8 -FILE_PATTERNS = *.c \ - *.h -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXCLUDE_SYMBOLS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -FILTER_SOURCE_PATTERNS = -USE_MDFILE_AS_MAINPAGE = -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -REFERENCES_LINK_SOURCE = YES -SOURCE_TOOLTIPS = YES -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = NO -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_EXTRA_STYLESHEET = -HTML_EXTRA_FILES = -HTML_COLORSTYLE_HUE = 220 -HTML_COLORSTYLE_SAT = 100 -HTML_COLORSTYLE_GAMMA = 80 -HTML_TIMESTAMP = NO -HTML_DYNAMIC_MENUS = YES -HTML_DYNAMIC_SECTIONS = NO -HTML_INDEX_NUM_ENTRIES = 100 -GENERATE_DOCSET = NO -DOCSET_FEEDNAME = "Doxygen generated docs" -DOCSET_BUNDLE_ID = org.doxygen.Project -DOCSET_PUBLISHER_ID = org.doxygen.Publisher -DOCSET_PUBLISHER_NAME = Publisher -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -CHM_INDEX_ENCODING = -BINARY_TOC = NO -TOC_EXPAND = NO -GENERATE_QHP = NO -QCH_FILE = -QHP_NAMESPACE = org.doxygen.Project -QHP_VIRTUAL_FOLDER = doc -QHP_CUST_FILTER_NAME = -QHP_CUST_FILTER_ATTRS = -QHP_SECT_FILTER_ATTRS = -QHG_LOCATION = -GENERATE_ECLIPSEHELP = NO -ECLIPSE_DOC_ID = org.doxygen.Project -DISABLE_INDEX = NO -GENERATE_TREEVIEW = NO -ENUM_VALUES_PER_LINE = 4 -TREEVIEW_WIDTH = 250 -EXT_LINKS_IN_WINDOW = NO -FORMULA_FONTSIZE = 10 -FORMULA_TRANSPARENT = YES -FORMULA_MACROFILE = -USE_MATHJAX = NO -MATHJAX_FORMAT = HTML-CSS -MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/ -MATHJAX_EXTENSIONS = -MATHJAX_CODEFILE = -SEARCHENGINE = YES -SERVER_BASED_SEARCH = NO -EXTERNAL_SEARCH = NO -SEARCHENGINE_URL = -SEARCHDATA_FILE = searchdata.xml -EXTERNAL_SEARCH_ID = -EXTRA_SEARCH_MAPPINGS = -#--------------------------------------------------------------------------- -# Configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = -MAKEINDEX_CMD_NAME = makeindex -LATEX_MAKEINDEX_CMD = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4 -EXTRA_PACKAGES = -LATEX_HEADER = -LATEX_FOOTER = -LATEX_EXTRA_STYLESHEET = -LATEX_EXTRA_FILES = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -LATEX_SOURCE_CODE = NO -LATEX_BIB_STYLE = plain -LATEX_TIMESTAMP = NO -LATEX_EMOJI_DIRECTORY = -#--------------------------------------------------------------------------- -# Configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -RTF_SOURCE_CODE = NO -#--------------------------------------------------------------------------- -# Configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_SUBDIR = -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# Configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = YES -XML_OUTPUT = source/xml -XML_PROGRAMLISTING = YES -XML_NS_MEMB_FILE_SCOPE = NO -#--------------------------------------------------------------------------- -# Configuration options related to the DOCBOOK output -#--------------------------------------------------------------------------- -GENERATE_DOCBOOK = NO -DOCBOOK_OUTPUT = docbook -DOCBOOK_PROGRAMLISTING = NO -#--------------------------------------------------------------------------- -# Configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# Configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = YES -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = IRAM_ATTR= \ - -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration options related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -EXTERNAL_PAGES = YES -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -DIA_PATH = -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -DOT_NUM_THREADS = 0 -DOT_FONTNAME = Helvetica -DOT_FONTSIZE = 10 -DOT_FONTPATH = -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -UML_LIMIT_NUM_FIELDS = 10 -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -CALLER_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -INTERACTIVE_SVG = NO -DOT_PATH = -DOTFILE_DIRS = -MSCFILE_DIRS = -DIAFILE_DIRS = -PLANTUML_JAR_PATH = -PLANTUML_CFG_FILE = -PLANTUML_INCLUDE_PATH = -DOT_GRAPH_MAX_NODES = 50 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES diff --git a/lib/libesp32_epdiy/doc/Makefile b/lib/libesp32_epdiy/doc/Makefile deleted file mode 100755 index 000969f6c..000000000 --- a/lib/libesp32_epdiy/doc/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -doxygen: - doxygen - -.PHONY: help Makefile doxygen - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile doxygen - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/lib/libesp32_epdiy/doc/html/bc_s.png b/lib/libesp32_epdiy/doc/html/bc_s.png deleted file mode 100755 index 224b29aa9..000000000 Binary files a/lib/libesp32_epdiy/doc/html/bc_s.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/bdwn.png b/lib/libesp32_epdiy/doc/html/bdwn.png deleted file mode 100755 index 940a0b950..000000000 Binary files a/lib/libesp32_epdiy/doc/html/bdwn.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/closed.png b/lib/libesp32_epdiy/doc/html/closed.png deleted file mode 100755 index 98cc2c909..000000000 Binary files a/lib/libesp32_epdiy/doc/html/closed.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/doc.png b/lib/libesp32_epdiy/doc/html/doc.png deleted file mode 100755 index 17edabff9..000000000 Binary files a/lib/libesp32_epdiy/doc/html/doc.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/doxygen.css b/lib/libesp32_epdiy/doc/html/doxygen.css deleted file mode 100755 index 73ecbb2cb..000000000 --- a/lib/libesp32_epdiy/doc/html/doxygen.css +++ /dev/null @@ -1,1771 +0,0 @@ -/* The standard CSS for doxygen 1.8.17 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/lib/libesp32_epdiy/doc/html/doxygen.png b/lib/libesp32_epdiy/doc/html/doxygen.png deleted file mode 100755 index 3ff17d807..000000000 Binary files a/lib/libesp32_epdiy/doc/html/doxygen.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/dynsections.js b/lib/libesp32_epdiy/doc/html/dynsections.js deleted file mode 100755 index ea0a7b39a..000000000 --- a/lib/libesp32_epdiy/doc/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -My Project: Main Page - - - - - - - - - -
-
- - - - - - -
-
My Project -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
My Project Documentation
-
-
-
- - - - diff --git a/lib/libesp32_epdiy/doc/html/jquery.js b/lib/libesp32_epdiy/doc/html/jquery.js deleted file mode 100755 index 103c32d79..000000000 --- a/lib/libesp32_epdiy/doc/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/lib/libesp32_epdiy/doc/html/menu.js b/lib/libesp32_epdiy/doc/html/menu.js deleted file mode 100755 index 433c15b8f..000000000 --- a/lib/libesp32_epdiy/doc/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/lib/libesp32_epdiy/doc/html/menudata.js b/lib/libesp32_epdiy/doc/html/menudata.js deleted file mode 100755 index bdab70c18..000000000 --- a/lib/libesp32_epdiy/doc/html/menudata.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}]} diff --git a/lib/libesp32_epdiy/doc/html/nav_f.png b/lib/libesp32_epdiy/doc/html/nav_f.png deleted file mode 100755 index 72a58a529..000000000 Binary files a/lib/libesp32_epdiy/doc/html/nav_f.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/nav_g.png b/lib/libesp32_epdiy/doc/html/nav_g.png deleted file mode 100755 index 2093a237a..000000000 Binary files a/lib/libesp32_epdiy/doc/html/nav_g.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/nav_h.png b/lib/libesp32_epdiy/doc/html/nav_h.png deleted file mode 100755 index 33389b101..000000000 Binary files a/lib/libesp32_epdiy/doc/html/nav_h.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/open.png b/lib/libesp32_epdiy/doc/html/open.png deleted file mode 100755 index 30f75c7ef..000000000 Binary files a/lib/libesp32_epdiy/doc/html/open.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/search/close.png b/lib/libesp32_epdiy/doc/html/search/close.png deleted file mode 100755 index 9342d3dfe..000000000 Binary files a/lib/libesp32_epdiy/doc/html/search/close.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/search/mag_sel.png b/lib/libesp32_epdiy/doc/html/search/mag_sel.png deleted file mode 100755 index 39c0ed52a..000000000 Binary files a/lib/libesp32_epdiy/doc/html/search/mag_sel.png and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/html/search/nomatches.html b/lib/libesp32_epdiy/doc/html/search/nomatches.html deleted file mode 100755 index 437732089..000000000 --- a/lib/libesp32_epdiy/doc/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/lib/libesp32_epdiy/doc/html/search/search.css b/lib/libesp32_epdiy/doc/html/search/search.css deleted file mode 100755 index 3cf9df94a..000000000 --- a/lib/libesp32_epdiy/doc/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/lib/libesp32_epdiy/doc/html/search/search.js b/lib/libesp32_epdiy/doc/html/search/search.js deleted file mode 100755 index a554ab9cb..000000000 --- a/lib/libesp32_epdiy/doc/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; eli>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/lib/libesp32_epdiy/doc/latex/Makefile b/lib/libesp32_epdiy/doc/latex/Makefile deleted file mode 100755 index 877c9cccd..000000000 --- a/lib/libesp32_epdiy/doc/latex/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -LATEX_CMD=pdflatex - -all: refman.pdf - -pdf: refman.pdf - -refman.pdf: clean refman.tex - $(LATEX_CMD) refman - makeindex refman.idx - $(LATEX_CMD) refman - latex_count=8 ; \ - while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - $(LATEX_CMD) refman ;\ - latex_count=`expr $$latex_count - 1` ;\ - done - makeindex refman.idx - $(LATEX_CMD) refman - - -clean: - rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/lib/libesp32_epdiy/doc/latex/doxygen.sty b/lib/libesp32_epdiy/doc/latex/doxygen.sty deleted file mode 100755 index 78a52546a..000000000 --- a/lib/libesp32_epdiy/doc/latex/doxygen.sty +++ /dev/null @@ -1,576 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} - -% Packages used by this style file -\RequirePackage{alltt} -%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{calc} -\RequirePackage{float} -%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package -\RequirePackage{verbatim} -\RequirePackage[table]{xcolor} -\RequirePackage{longtable_doxygen} -\RequirePackage{tabu_doxygen} -\RequirePackage{fancyvrb} -\RequirePackage{tabularx} -\RequirePackage{multirow} -\RequirePackage{hanging} -\RequirePackage{ifpdf} -\RequirePackage{adjustbox} -\RequirePackage{amssymb} -\RequirePackage{stackengine} -\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis - -%---------- Internal commands used in this style file ---------------- - -\newcommand{\ensurespace}[1]{% - \begingroup% - \setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@% - \penalty -100\vskip\z@\@plus -\dimen@% - \vskip\dimen@% - \penalty 9999% - \vskip -\dimen@% - \vskip\z@skip% hide the previous |\vskip| from |\addvspace| - \endgroup% -} - -\newcommand{\DoxyHorRuler}[1]{% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{#1=0}% - {% - \hrule% - }% - {% - \hrulefilll% - }% -} -\newcommand{\DoxyLabelFont}{} -\newcommand{\entrylabel}[1]{% - {% - \parbox[b]{\labelwidth-4pt}{% - \makebox[0pt][l]{\DoxyLabelFont#1}% - \vspace{1.5\baselineskip}% - }% - }% -} - -\newenvironment{DoxyDesc}[1]{% - \ensurespace{4\baselineskip}% - \begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - %\setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -\newsavebox{\xrefbox} -\newlength{\xreflength} -\newcommand{\xreflabel}[1]{% - \sbox{\xrefbox}{#1}% - \setlength{\xreflength}{\wd\xrefbox}% - \ifthenelse{\xreflength>\labelwidth}{% - \begin{minipage}{\textwidth}% - \setlength{\parindent}{0pt}% - \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% - \end{minipage}% - }{% - \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% - }% -} - -%---------- Commands used by doxygen LaTeX output generator ---------- - -% Used by
     ... 
    -\newenvironment{DoxyPre}{% - \small% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} -% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. -\newlength{\CodeWidthChar} -\newlength{\CodeHeightChar} -\settowidth{\CodeWidthChar}{?} -\settoheight{\CodeHeightChar}{?} -% Necessary for hanging indent -\newlength{\DoxyCodeWidth} - -\newcommand\DoxyCodeLine[1]{\hangpara{\DoxyCodeWidth}{1}{#1}\par} - -\newcommand\NiceSpace{% - \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% -} - -% Used by @code ... @endcode -\newenvironment{DoxyCode}[1]{% - \par% - \scriptsize% - \normalfont\ttfamily% - \rightskip0pt plus 1fil% - \settowidth{\DoxyCodeWidth}{000000}% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% - \setlength{\parskip}{0ex plus 0ex minus 0ex}% - \ifthenelse{\equal{#1}{0}} - { - {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% - } - { - {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% - } - -}{% - \normalfont% - \normalsize% - \settowidth{\CodeWidthChar}{?}% - \settoheight{\CodeHeightChar}{?}% -} - -% Redefining not defined characters, i.e. "Replacement Character" in tex output. -\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% - \textcolor{white}{\sffamily\bfseries\small ?}}{% - \rotatebox{45}{$\blacksquare$}}}} - -% Used by @example, @include, @includelineno and @dontinclude -\newenvironment{DoxyCodeInclude}[1]{% - \DoxyCode{#1}% -}{% - \endDoxyCode% -} - -% Used by @verbatim ... @endverbatim -\newenvironment{DoxyVerb}{% - \footnotesize% - \verbatim% -}{% - \endverbatim% - \normalsize% -} - -% Used by @verbinclude -\newenvironment{DoxyVerbInclude}{% - \DoxyVerb% -}{% - \endDoxyVerb% -} - -% Used by numbered lists (using '-#' or
      ...
    ) -\newenvironment{DoxyEnumerate}{% - \enumerate% -}{% - \endenumerate% -} - -% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) -\newenvironment{DoxyItemize}{% - \itemize% -}{% - \enditemize% -} - -% Used by description lists (using
    ...
    ) -\newenvironment{DoxyDescription}{% - \description% -}{% - \enddescription% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if caption is specified) -\newenvironment{DoxyImage}{% - \begin{figure}[H]% - \begin{center}% -}{% - \end{center}% - \end{figure}% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if no caption is specified) -\newenvironment{DoxyImageNoCaption}{% - \begin{center}% -}{% - \end{center}% -} - -% Used by @image -% (only if inline is specified) -\newenvironment{DoxyInlineImage}{% -}{% -} - -% Used by @attention -\newenvironment{DoxyAttention}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @author and @authors -\newenvironment{DoxyAuthor}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @date -\newenvironment{DoxyDate}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @invariant -\newenvironment{DoxyInvariant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @note -\newenvironment{DoxyNote}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @post -\newenvironment{DoxyPostcond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @pre -\newenvironment{DoxyPrecond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @copyright -\newenvironment{DoxyCopyright}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @remark -\newenvironment{DoxyRemark}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @return and @returns -\newenvironment{DoxyReturn}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @since -\newenvironment{DoxySince}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @see -\newenvironment{DoxySeeAlso}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @version -\newenvironment{DoxyVersion}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @warning -\newenvironment{DoxyWarning}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @internal -\newenvironment{DoxyInternal}[1]{% - \paragraph*{#1}% -}{% -} - -% Used by @par and @paragraph -\newenvironment{DoxyParagraph}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by parameter lists -\newenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc - {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\newenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for parameters within a detailed function description -\newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% -}{% -} - -% Used by return value lists -\newenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by exception lists -\newenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used by template parameter lists -\newenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu*}% - \vspace{6pt}% -} - -% Used for member lists -\newenvironment{DoxyCompactItemize}{% - \begin{itemize}% - \setlength{\itemsep}{-3pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \setlength{\partopsep}{0pt}% -}{% - \end{itemize}% -} - -% Used for member descriptions -\newenvironment{DoxyCompactList}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - \setlength{\itemsep}{0pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \renewcommand{\makelabel}{\hfill}% - }% -}{% - \end{list}% -} - -% Used for reference lists (@bug, @deprecated, @todo, etc.) -\newenvironment{DoxyRefList}{% - \begin{list}{}{% - \setlength{\labelwidth}{10pt}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \renewcommand{\makelabel}{\xreflabel}% - }% -}{% - \end{list}% -} - -% Used by @bug, @deprecated, @todo, etc. -\newenvironment{DoxyRefDesc}[1]{% - \begin{list}{}{% - \renewcommand\makelabel[1]{\textbf{##1}}% - \settowidth\labelwidth{\makelabel{#1}}% - \setlength\leftmargin{\labelwidth+\labelsep}% - }% -}{% - \end{list}% -} - -% Used by parameter lists and simple sections -\newenvironment{Desc} -{\begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - } -}{% - \end{list}% -} - -% Used by tables -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% -\newenvironment{TabularC}[1]% -{\tabulinesep=1mm -\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% -{\end{longtabu*}\par}% - -\newenvironment{TabularNC}[1]% -{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% -{\end{tabu}\par}% - -% Used for member group headers -\newenvironment{Indent}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - }% - \item[]\ignorespaces% -}{% - \unskip% - \end{list}% -} - -% Used when hyperlinks are turned off -\newcommand{\doxyref}[3]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used to link to a table when hyperlinks are turned on -\newcommand{\doxytablelink}[2]{% - \ref{#1}% -} - -% Used to link to a table when hyperlinks are turned off -\newcommand{\doxytableref}[3]{% - \ref{#3}% -} - -% Used by @addindex -\newcommand{\lcurly}{\{} -\newcommand{\rcurly}{\}} - -% Colors used for syntax highlighting -\definecolor{comment}{rgb}{0.5,0.0,0.0} -\definecolor{keyword}{rgb}{0.0,0.5,0.0} -\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} -\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} -\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} -\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} -\definecolor{charliteral}{rgb}{0.0,0.5,0.5} -\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} -\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} -\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} -\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} - -% Color used for table heading -\newcommand{\tableheadbgcolor}{lightgray}% - -% Version of hypertarget with correct landing location -\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} - -% possibility to have sections etc. be within the margins -% unfortunately had to copy part of book.cls and add \raggedright -\makeatletter -\newcommand\doxysection{\@startsection {section}{1}{\z@}% - {-3.5ex \@plus -1ex \@minus -.2ex}% - {2.3ex \@plus.2ex}% - {\raggedright\normalfont\Large\bfseries}} -\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\large\bfseries}} -\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% - {-3.25ex\@plus -1ex \@minus -.2ex}% - {1.5ex \@plus .2ex}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxyparagraph{\@startsection{paragraph}{4}{\z@}% - {3.25ex \@plus1ex \@minus.2ex}% - {-1em}% - {\raggedright\normalfont\normalsize\bfseries}} -\newcommand\doxysubparagraph{\@startsection{subparagraph}{5}{\parindent}% - {3.25ex \@plus1ex \@minus .2ex}% - {-1em}% - {\raggedright\normalfont\normalsize\bfseries}} -\makeatother -% Define caption that is also suitable in a table -\makeatletter -\def\doxyfigcaption{% -\refstepcounter{figure}% -\@dblarg{\@caption{figure}}} -\makeatother diff --git a/lib/libesp32_epdiy/doc/latex/longtable_doxygen.sty b/lib/libesp32_epdiy/doc/latex/longtable_doxygen.sty deleted file mode 100755 index a0eb314f9..000000000 --- a/lib/libesp32_epdiy/doc/latex/longtable_doxygen.sty +++ /dev/null @@ -1,448 +0,0 @@ -%% -%% This is file `longtable.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% longtable.dtx (with options: `package') -%% -%% This is a generated file. -%% -%% The source is maintained by the LaTeX Project team and bug -%% reports for it can be opened at http://latex-project.org/bugs.html -%% (but please observe conditions on bug reports sent to that address!) -%% -%% Copyright 1993-2016 -%% The LaTeX3 Project and any individual authors listed elsewhere -%% in this file. -%% -%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'. -%% -------------------------------------------------------------------------- -%% -%% It may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file may only be distributed together with a copy of the LaTeX -%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle' -%% without such generated files. -%% -%% The list of all files belonging to the LaTeX `Tools Bundle' is -%% given in the file `manifest.txt'. -%% -%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle -\NeedsTeXFormat{LaTeX2e}[1995/06/01] -\ProvidesPackage{longtable_doxygen} - [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen] -\def\LT@err{\PackageError{longtable}} -\def\LT@warn{\PackageWarning{longtable}} -\def\LT@final@warn{% - \AtEndDocument{% - \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}% - \global\let\LT@final@warn\relax} -\DeclareOption{errorshow}{% - \def\LT@warn{\PackageInfo{longtable}}} -\DeclareOption{pausing}{% - \def\LT@warn#1{% - \LT@err{#1}{This is not really an error}}} -\DeclareOption{set}{} -\DeclareOption{final}{} -\ProcessOptions -\newskip\LTleft \LTleft=\fill -\newskip\LTright \LTright=\fill -\newskip\LTpre \LTpre=\bigskipamount -\newskip\LTpost \LTpost=\bigskipamount -\newcount\LTchunksize \LTchunksize=20 -\let\c@LTchunksize\LTchunksize -\newdimen\LTcapwidth \LTcapwidth=4in -\newbox\LT@head -\newbox\LT@firsthead -\newbox\LT@foot -\newbox\LT@lastfoot -\newcount\LT@cols -\newcount\LT@rows -\newcounter{LT@tables} -\newcounter{LT@chunks}[LT@tables] -\ifx\c@table\undefined - \newcounter{table} - \def\fnum@table{\tablename~\thetable} -\fi -\ifx\tablename\undefined - \def\tablename{Table} -\fi -\newtoks\LT@p@ftn -\mathchardef\LT@end@pen=30000 -\def\longtable{% - \par - \ifx\multicols\@undefined - \else - \ifnum\col@number>\@ne - \@twocolumntrue - \fi - \fi - \if@twocolumn - \LT@err{longtable not in 1-column mode}\@ehc - \fi - \begingroup - \@ifnextchar[\LT@array{\LT@array[x]}} -\def\LT@array[#1]#2{% - \refstepcounter{table}\stepcounter{LT@tables}% - \if l#1% - \LTleft\z@ \LTright\fill - \else\if r#1% - \LTleft\fill \LTright\z@ - \else\if c#1% - \LTleft\fill \LTright\fill - \fi\fi\fi - \let\LT@mcol\multicolumn - \let\LT@@tabarray\@tabarray - \let\LT@@hl\hline - \def\@tabarray{% - \let\hline\LT@@hl - \LT@@tabarray}% - \let\\\LT@tabularcr\let\tabularnewline\\% - \def\newpage{\noalign{\break}}% - \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% - \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% - \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption - \@tempdima\ht\strutbox - \let\@endpbox\LT@endpbox - \ifx\extrarowheight\@undefined - \let\@acol\@tabacol - \let\@classz\@tabclassz \let\@classiv\@tabclassiv - \def\@startpbox{\vtop\LT@startpbox}% - \let\@@startpbox\@startpbox - \let\@@endpbox\@endpbox - \let\LT@LL@FM@cr\@tabularcr - \else - \advance\@tempdima\extrarowheight - \col@sep\tabcolsep - \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr - \fi - \setbox\@arstrutbox\hbox{\vrule - \@height \arraystretch \@tempdima - \@depth \arraystretch \dp \strutbox - \@width \z@}% - \let\@sharp##\let\protect\relax - \begingroup - \@mkpream{#2}% - \xdef\LT@bchunk{% - \global\advance\c@LT@chunks\@ne - \global\LT@rows\z@\setbox\z@\vbox\bgroup - \LT@setprevdepth - \tabskip\LTleft \noexpand\halign to\hsize\bgroup - \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% - \endgroup - \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols - \LT@make@row - \m@th\let\par\@empty - \everycr{}\lineskip\z@\baselineskip\z@ - \LT@bchunk} -\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} -\def\LT@start{% - \let\LT@start\endgraf - \endgraf\penalty\z@\vskip\LTpre - \dimen@\pagetotal - \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi - \advance\dimen@ \ht\LT@foot - \dimen@ii\vfuzz - \vfuzz\maxdimen - \setbox\tw@\copy\z@ - \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox - \setbox\tw@\vbox{\unvbox\tw@}% - \vfuzz\dimen@ii - \advance\dimen@ \ht - \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@\dp - \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi - \advance\dimen@ -\pagegoal - \ifdim \dimen@>\z@\vfil\break\fi - \global\@colroom\@colht - \ifvoid\LT@foot\else - \advance\vsize-\ht\LT@foot - \global\advance\@colroom-\ht\LT@foot - \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ - \maxdepth\z@ - \fi - \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak - \output{\LT@output}} -\def\endlongtable{% - \crcr - \noalign{% - \let\LT@entry\LT@entry@chop - \xdef\LT@save@row{\LT@save@row}}% - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \if@filesw - {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% - \gdef\expandafter\noexpand - \csname LT@\romannumeral\c@LT@tables\endcsname - {\LT@save@row}}}% - \fi - \ifx\LT@save@row\LT@@save@row - \else - \LT@warn{Column \@width s have changed\MessageBreak - in table \thetable}% - \LT@final@warn - \fi - \endgraf\penalty -\LT@end@pen - \endgroup - \global\@mparbottom\z@ - \pagegoal\vsize - \endgraf\penalty\z@\addvspace\LTpost - \ifvoid\footins\else\insert\footins{}\fi} -\def\LT@nofcols#1&{% - \futurelet\@let@token\LT@n@fcols} -\def\LT@n@fcols{% - \advance\LT@cols\@ne - \ifx\@let@token\LT@nofcols - \expandafter\@gobble - \else - \expandafter\LT@nofcols - \fi} -\def\LT@tabularcr{% - \relax\iffalse{\fi\ifnum0=`}\fi - \@ifstar - {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr - \LT@t@bularcr}% - {\LT@t@bularcr}} -\let\LT@crcr\crcr -\let\LT@setprevdepth\relax -\def\LT@t@bularcr{% - \global\advance\LT@rows\@ne - \ifnum\LT@rows=\LTchunksize - \gdef\LT@setprevdepth{% - \prevdepth\z@\global - \global\let\LT@setprevdepth\relax}% - \expandafter\LT@xtabularcr - \else - \ifnum0=`{}\fi - \expandafter\LT@LL@FM@cr - \fi} -\def\LT@xtabularcr{% - \@ifnextchar[\LT@argtabularcr\LT@ntabularcr} -\def\LT@ntabularcr{% - \ifnum0=`{}\fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@argtabularcr[#1]{% - \ifnum0=`{}\fi - \ifdim #1>\z@ - \unskip\@xargarraycr{#1}% - \else - \@yargarraycr{#1}% - \fi - \LT@echunk - \LT@start - \unvbox\z@ - \LT@get@widths - \LT@bchunk} -\def\LT@echunk{% - \crcr\LT@save@row\cr\egroup - \global\setbox\@ne\lastbox - \unskip - \egroup} -\def\LT@entry#1#2{% - \ifhmode\@firstofone{&}\fi\omit - \ifnum#1=\c@LT@chunks - \else - \kern#2\relax - \fi} -\def\LT@entry@chop#1#2{% - \noexpand\LT@entry - {\ifnum#1>\c@LT@chunks - 1}{0pt% - \else - #1}{#2% - \fi}} -\def\LT@entry@write{% - \noexpand\LT@entry^^J% - \@spaces} -\def\LT@kill{% - \LT@echunk - \LT@get@widths - \expandafter\LT@rebox\LT@bchunk} -\def\LT@rebox#1\bgroup{% - #1\bgroup - \unvbox\z@ - \unskip - \setbox\z@\lastbox} -\def\LT@blank@row{% - \xdef\LT@save@row{\expandafter\LT@build@blank - \romannumeral\number\LT@cols 001 }} -\def\LT@build@blank#1{% - \if#1m% - \noexpand\LT@entry{1}{0pt}% - \expandafter\LT@build@blank - \fi} -\def\LT@make@row{% - \global\expandafter\let\expandafter\LT@save@row - \csname LT@\romannumeral\c@LT@tables\endcsname - \ifx\LT@save@row\relax - \LT@blank@row - \else - {\let\LT@entry\or - \if!% - \ifcase\expandafter\expandafter\expandafter\LT@cols - \expandafter\@gobble\LT@save@row - \or - \else - \relax - \fi - !% - \else - \aftergroup\LT@blank@row - \fi}% - \fi} -\let\setlongtables\relax -\def\LT@get@widths{% - \setbox\tw@\hbox{% - \unhbox\@ne - \let\LT@old@row\LT@save@row - \global\let\LT@save@row\@empty - \count@\LT@cols - \loop - \unskip - \setbox\tw@\lastbox - \ifhbox\tw@ - \LT@def@row - \advance\count@\m@ne - \repeat}% - \ifx\LT@@save@row\@undefined - \let\LT@@save@row\LT@save@row - \fi} -\def\LT@def@row{% - \let\LT@entry\or - \edef\@tempa{% - \ifcase\expandafter\count@\LT@old@row - \else - {1}{0pt}% - \fi}% - \let\LT@entry\relax - \xdef\LT@save@row{% - \LT@entry - \expandafter\LT@max@sel\@tempa - \LT@save@row}} -\def\LT@max@sel#1#2{% - {\ifdim#2=\wd\tw@ - #1% - \else - \number\c@LT@chunks - \fi}% - {\the\wd\tw@}} -\def\LT@hline{% - \noalign{\ifnum0=`}\fi - \penalty\@M - \futurelet\@let@token\LT@@hline} -\def\LT@@hline{% - \ifx\@let@token\hline - \global\let\@gtempa\@gobble - \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}% - \else - \global\let\@gtempa\@empty - \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\LT@sep}% - \multispan\LT@cols - \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr - \noalign{\penalty\@M}% - \@gtempa} -\def\LT@caption{% - \noalign\bgroup - \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n} -\def\LT@c@ption#1[#2]#3{% - \LT@makecaption#1\fnum@table{#3}% - \def\@tempa{#2}% - \ifx\@tempa\@empty\else - {\let\\\space - \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}% - \fi} -\def\LT@capti@n{% - \@ifstar - {\egroup\LT@c@ption\@gobble[]}% - {\egroup\@xdblarg{\LT@c@ption\@firstofone}}} -\def\LT@makecaption#1#2#3{% - \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{% - \sbox\@tempboxa{#1{#2: }#3}% - \ifdim\wd\@tempboxa>\hsize - #1{#2: }#3% - \else - \hbox to\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \endgraf\vskip\baselineskip}% - \hss}}} -\def\LT@output{% - \ifnum\outputpenalty <-\@Mi - \ifnum\outputpenalty > -\LT@end@pen - \LT@err{floats and marginpars not allowed in a longtable}\@ehc - \else - \setbox\z@\vbox{\unvbox\@cclv}% - \ifdim \ht\LT@lastfoot>\ht\LT@foot - \dimen@\pagegoal - \advance\dimen@-\ht\LT@lastfoot - \ifdim\dimen@<\ht\z@ - \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% - \@makecol - \@outputpage - \setbox\z@\vbox{\box\LT@head}% - \fi - \fi - \global\@colroom\@colht - \global\vsize\@colht - \vbox - {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% - \fi - \else - \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% - \@makecol - \@outputpage - \global\vsize\@colroom - \copy\LT@head\nobreak - \fi} -\def\LT@end@hd@ft#1{% - \LT@echunk - \ifx\LT@start\endgraf - \LT@err - {Longtable head or foot not at start of table}% - {Increase LTchunksize}% - \fi - \setbox#1\box\z@ - \LT@get@widths - \LT@bchunk} -\def\endfirsthead{\LT@end@hd@ft\LT@firsthead} -\def\endhead{\LT@end@hd@ft\LT@head} -\def\endfoot{\LT@end@hd@ft\LT@foot} -\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot} -\def\LT@startpbox#1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} -\def\LT@endpbox{% - \@finalstrut\@arstrutbox - \egroup - \the\LT@p@ftn - \global\LT@p@ftn{}% - \hfil} -\def\LT@p@ftntext#1{% - \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}% - \global\LT@p@ftn\expandafter{\@tempa{#1}}}% - -\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen} -\endinput -%% -%% End of file `longtable.sty'. diff --git a/lib/libesp32_epdiy/doc/latex/refman.tex b/lib/libesp32_epdiy/doc/latex/refman.tex deleted file mode 100755 index 7b8e12f1e..000000000 --- a/lib/libesp32_epdiy/doc/latex/refman.tex +++ /dev/null @@ -1,184 +0,0 @@ -\let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}\documentclass[twoside]{book} - -%% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package -\usepackage{ifthen} -\ifx\requestedLaTeXdate\undefined -\usepackage{array} -\else -\usepackage{array}[=2016-10-06] -\fi -%% -% Packages required by doxygen -\usepackage{fixltx2e} -\usepackage{calc} -\usepackage{doxygen} -\usepackage{graphicx} -\usepackage[utf8]{inputenc} -\usepackage{makeidx} -\usepackage{multicol} -\usepackage{multirow} -\PassOptionsToPackage{warn}{textcomp} -\usepackage{textcomp} -\usepackage[nointegrals]{wasysym} -\usepackage[table]{xcolor} -\usepackage{ifpdf,ifxetex} - -% Font selection -\usepackage[T1]{fontenc} -\usepackage[scaled=.90]{helvet} -\usepackage{courier} -\usepackage{amssymb} -\usepackage{sectsty} -\renewcommand{\familydefault}{\sfdefault} -\allsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - -% Arguments of doxygenemoji: -% 1) '::' form of the emoji, already "LaTeX"-escaped -% 2) file with the name of the emoji without the .png extension -% in case image exist use this otherwise use the '::' form -\newcommand{\doxygenemoji}[2]{% - \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}% -} -% Page & text layout -\usepackage{geometry} -\geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% -} -\tolerance=750 -\hfuzz=15pt -\hbadness=750 -\setlength{\emergencystretch}{15pt} -\setlength{\parindent}{0cm} -\newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} -\newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} -\doxynormalparskip -\makeatletter -\renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% -} -\renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% -} -\makeatother - -\makeatletter -\newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} -\makeatother - -% Headers & footers -\usepackage{fancyhdr} -\pagestyle{fancyplain} -\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} -\fancyhead[CE]{\fancyplain{}{}} -\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} -\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} -\fancyhead[CO]{\fancyplain{}{}} -\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} -\fancyfoot[LE]{\fancyplain{}{}} -\fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[CO]{\fancyplain{}{}} -\fancyfoot[RO]{\fancyplain{}{}} -\renewcommand{\footrulewidth}{0.4pt} -\renewcommand{\chaptermark}[1]{% - \markboth{#1}{}% -} -\renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% -} - -% Indices & bibliography -\usepackage{natbib} -\usepackage[titles]{tocloft} -\setcounter{tocdepth}{3} -\setcounter{secnumdepth}{5} -\makeindex - -\usepackage{newunicodechar} - \newunicodechar{⁻}{${}^{-}$}% Superscript minus - \newunicodechar{²}{${}^{2}$}% Superscript two - \newunicodechar{³}{${}^{3}$}% Superscript three - -% Hyperlinks (required, but should be loaded last) -\ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} -\else - \ifxetex - \usepackage[pagebackref=true]{hyperref} - \else - \usepackage[ps2pdf,pagebackref=true]{hyperref} - \fi -\fi - -\hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=blue,% - unicode% -} - -% Custom commands -\newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% -} - -\usepackage{caption} -\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} - -\usepackage{etoc} -\etocsettocstyle{\doxytocparskip}{\doxynormalparskip} -\renewcommand{\numberline}[1]{#1~} -%===== C O N T E N T S ===== - -\begin{document} - -% Titlepage & ToC -\hypersetup{pageanchor=false, - bookmarksnumbered=true, - pdfencoding=unicode - } -\pagenumbering{alph} -\begin{titlepage} -\vspace*{7cm} -\begin{center}% -{\Large My Project }\\ -\vspace*{1cm} -{\large Generated by Doxygen 1.8.17}\\ -\end{center} -\end{titlepage} -\clearemptydoublepage -\pagenumbering{roman} -\tableofcontents -\clearemptydoublepage -\pagenumbering{arabic} -\hypersetup{pageanchor=true} - -%--- Begin generated contents --- -%--- End generated contents --- - -% Index -\backmatter -\newpage -\phantomsection -\clearemptydoublepage -\addcontentsline{toc}{chapter}{\indexname} -\printindex - -\end{document} diff --git a/lib/libesp32_epdiy/doc/latex/tabu_doxygen.sty b/lib/libesp32_epdiy/doc/latex/tabu_doxygen.sty deleted file mode 100755 index 60fd7e8dc..000000000 --- a/lib/libesp32_epdiy/doc/latex/tabu_doxygen.sty +++ /dev/null @@ -1,2557 +0,0 @@ -%% -%% This is file `tabu.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% tabu.dtx (with options: `package') -%% -%% This is a generated file. -%% Copyright (FC) 2010-2011 - lppl -%% -%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars -%% -%% ********************************************************************************************** -%% \begin{tabu} { preamble } => default target: \linewidth or \linegoal -%% \begin{tabu} to { preamble } => target specified -%% \begin{tabu} spread { preamble } => target relative to the ``natural width'' -%% -%% tabu works in text and in math modes. -%% -%% X columns: automatic width adjustment + horizontal and vertical alignment -%% \begin{tabu} { X[4c] X[1c] X[-2ml] } -%% -%% Horizontal lines and / or leaders: -%% \hline\hline => double horizontal line -%% \firsthline\hline => for nested tabulars -%% \lasthline\hline => for nested tabulars -%% \tabucline[line spec]{column-column} => ``funny'' lines (dash/leader) -%% Automatic lines / leaders : -%% \everyrow{\hline\hline} -%% -%% Vertical lines and / or leaders: -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] } -%% \begin{tabu} { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] } -%% -%% Fixed vertical spacing adjustment: -%% \extrarowheight= \extrarowdepth= -%% or: \extrarowsep= => may be prefixed by \global -%% -%% Dynamic vertical spacing adjustment: -%% \abovetabulinesep= \belowtabulinesep= -%% or: \tabulinesep= => may be prefixed by \global -%% -%% delarray.sty shortcuts: in math and text modes -%% \begin{tabu} .... \({ preamble }\) -%% -%% Algorithms reports: -%% \tracingtabu=1 \tracingtabu=2 -%% -%% ********************************************************************************************** -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any later -%% version. The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% -%% This work consists of the main source file tabu.dtx -%% and the derived files -%% tabu.sty, tabu.pdf, tabu.ins -%% -%% tabu : Flexible LaTeX tabulars -%% lppl copyright 2010-2011 by FC -%% - -\NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen] -\RequirePackage{array}[2008/09/09] -\RequirePackage{varwidth}[2009/03/30] -\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined} -\let\tabu@AtEnd\@empty -\def\TMP@EnsureCode#1={% - \edef\tabu@AtEnd{\tabu@AtEnd - \catcode#1 \the\catcode#1}% - \catcode#1=% -}% \TMP@EnsureCode -\TMP@EnsureCode 33 = 12 % ! -\TMP@EnsureCode 58 = 12 % : (for siunitx) -\TMP@EnsureCode124 = 12 % | -\TMP@EnsureCode 36 = 3 % $ = math shift -\TMP@EnsureCode 38 = 4 % & = tab alignment character -\TMP@EnsureCode 32 = 10 % space -\TMP@EnsureCode 94 = 7 % ^ -\TMP@EnsureCode 95 = 8 % _ -%% Constants -------------------------------------------------------- -\newcount \c@taburow \def\thetaburow {\number\c@taburow} -\newcount \tabu@nbcols -\newcount \tabu@cnt -\newcount \tabu@Xcol -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcount \tabu@alloc \tabu@alloc=\m@ne -\newcount \tabu@nested -\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc} -\newdimen \tabu@target -\newdimen \tabu@spreadtarget -\newdimen \tabu@naturalX -\newdimen \tabucolX -\let\tabu@DELTA \@tempdimc -\let\tabu@thick \@tempdima -\let\tabu@on \@tempdimb -\let\tabu@off \@tempdimc -\newdimen \tabu@Xsum -\newdimen \extrarowdepth -\newdimen \abovetabulinesep -\newdimen \belowtabulinesep -\newdimen \tabustrutrule \tabustrutrule \z@ -\newtoks \tabu@thebody -\newtoks \tabu@footnotes -\newsavebox \tabu@box -\newsavebox \tabu@arstrutbox -\newsavebox \tabu@hleads -\newsavebox \tabu@vleads -\newif \iftabu@colortbl -\newif \iftabu@siunitx -\newif \iftabu@measuring -\newif \iftabu@spread -\newif \iftabu@negcoef -\newif \iftabu@everyrow -\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue} -\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse} -\newif \iftabu@long -\newif \iftabuscantokens -\def\tabu@rescan {\tabu@verbatim \scantokens } -%% Utilities (for internal usage) ----------------------------------- -\def\tabu@gobblespace #1 {#1} -\def\tabu@gobbletoken #1#2{#1} -\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex} -\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble - \else\ifx \@sptoken\@let@token - \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX - \fi\fi -}% \tabu@gobblex -\def\tabu@X{^^J} -{\obeyspaces -\global\let\tabu@spxiii= % saves an active space (for \ifx) -\gdef\tabu@@spxiii{ }} -\def\tabu@ifenvir {% only for \multicolumn - \expandafter\tabu@if@nvir\csname\@currenvir\endcsname -}% \tabu@ifenvir -\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else - \ifx\longtabu#1first\else - second\fi\fi oftwo\endcsname -}% \tabu@ifenvir -\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi} -{\catcode`\&=3 -\gdef\tabu@strtrim #1{% #1 = control sequence to trim - \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi - \let\tabu@c@l@r \@empty \let#1\@empty - \else \expandafter \tabu@trimspaces #1\@nnil - \fi -}% \tabu@strtrim -\gdef\tabu@trimspaces #1\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& }% -\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&} -\gdef\tabu@lastspace #1{\def #3{#1}% - \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi - \tabu@trimspaces #1\@nnil} -}% \catcode -\def\tabu@sanitizearg #1#2{{% - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2% - \expandafter}\expandafter\def\expandafter#2\expandafter{#2}% -}% \tabu@sanitizearg -\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}% - \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!! -}% \tabu@textbar -\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi} -\def\tabu@everyrow@egroup{% - \iftabu@everyrow \expandafter \endgroup \the\toks@ - \else \ifnum0=`{\fi}% - \fi -}% \tabu@everyrow@egroup -\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \z@}% -}% \tabu@arstrut -\def\tabu@rearstrut {% - \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax - \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth \relax - \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima - \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi - \tabu@mkarstrut - \fi -}% \tabu@rearstrut -\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi} -\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox - \hbox to\z@{\hbox to\z@{\hss - {\tabu@DBG{cyan}\vrule - height \arraystretch \dimexpr\ht\strutbox+\extrarowheight - depth \z@ - width \tabustrutrule}\kern-\tabustrutrule - {\tabu@DBG{pink}\vrule - height \z@ - depth \arraystretch \dimexpr\dp\strutbox+\extrarowdepth - width \tabustrutrule}}}% -}% \tabu@DBG@arstrut -\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@ - \@nextchar}}% -\def\tabu@savedecl{\ifcat$\d@llarend\else - \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode -}% \tabu@savedecl -\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@} -\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k } -\let\tabu@trialh@@k \@empty -\def\tabu@nowrite #1#{{\afterassignment}\toks@} -\let\tabu@write\write -\let\tabu@immediate\immediate -\def\tabu@WRITE{\begingroup - \def\immediate\write{\aftergroup\endgroup - \tabu@immediate\tabu@write}% -}% \tabu@WRITE -\expandafter\def\expandafter\tabu@GenericError\expandafter{% - \expandafter\tabu@WRITE\GenericError} -\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}} -\def\tabu@noxfootnote [#1]{\@gobble} -\def\tabu@nocolor #1#{\@gobble} -\newcommand*\tabu@norowcolor[2][]{} -\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}% - \futurelet\@let@token \tabu@m@ybesiunitx} -\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {% - \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi - \tabu@temp}% \tabu@m@ybesiunitx -}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname -\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}% -%% Fixed vertical spacing adjustment: \extrarowsep ------------------ -\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}% - \iftabu@everyrow \aftergroup\tabu@Gextra - \else \aftergroup\tabu@n@Gextra - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra -}% \extrarowsep -\def\tabu@extra {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setextrasep \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extra -\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2} -\def\tabu@extr@ #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth - \fi \tabu@temp}% -}% \tabu@extr@ -\def\tabu@setextrasep {\extrarowheight=\extrarowdepth - \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth -}% \tabu@setextrasep -\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi} -\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi} -\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra} -\let\tabu@C@extra \z@ -\let\tabu@G@extra \@empty -%% Dynamic vertical spacing adjustment: \tabulinesep ---------------- -\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}% - \iftabu@everyrow \aftergroup\tabu@Glinesep - \else \aftergroup\tabu@n@Glinesep - \fi - \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep -}% \tabulinesep -\def\tabu@linesep {\@ifnextchar_% - {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}} - {\ifx ^\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}% - \else \let\tabu@temp \@empty - \afterassignment \tabu@setlinesep \abovetabulinesep - \fi \tabu@temp}% -}% \tabu@linesep -\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2} -\def\tabu@sets@p #1#2{\@ifnextchar^% - {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}} - {\ifx _\@let@token \def\tabu@temp{% - \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}% - \else \let\tabu@temp \@empty - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep - \fi \tabu@temp}% -}% \tabu@sets@p -\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep - \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep -}% \tabu@setlinesep -\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi} -\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi} -\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep} -\let\tabu@C@linesep \z@ -\let\tabu@G@linesep \@empty -%% \global\extrarowsep and \global\tabulinesep ------------------- -\def\tabu@Gsave #1#2#3#4{\xdef#1{#1% - \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}% -}% \tabu@Gsave -\def\tabu@Grestore#1#2{% - \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax - \ifcat$\the\toks\currentgrouplevel$\else - \global\let#1\@empty \global\let#2\z@ - \the\toks\currentgrouplevel - \fi -}% \tabu@Grestore -%% Setting code for every row --------------------------------------- -\newcommand*\everyrow{\tabu@everyrow@bgroup - \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop -}% \everyrow -\def\tabu@evrstartstop {\@ifnextchar^% - {\afterassignment \tabu@evrstartstop \tabu@stop=}% - {\ifx ^\@let@token - \afterassignment\tabu@evrstartstop \tabu@start=% - \else \afterassignment\tabu@everyr@w \toks@ - \fi}% -}% \tabu@evrstartstop -\def\tabu@everyr@w {% - \xdef\tabu@everyrow{% - \noexpand\tabu@everyrowfalse - \let\noalign \relax - \noexpand\tabu@rowfontreset - \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors - \let\noexpand\tabu@docline \noexpand\tabu@docline@evr - \the\toks@ - \noexpand\tabu@evrh@@k - \noexpand\tabu@rearstrut - \global\advance\c@taburow \@ne}% - \iftabu@everyrow \toks@\expandafter - {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}% - \else \xdef\tabu@evr@G{\the\toks@}% - \fi - \tabu@everyrow@egroup -}% \tabu@everyr@w -\def\tabu@evr {\def\tabu@evrh@@k} % for internal use only -\tabu@evr{} -%% line style and leaders ------------------------------------------- -\newcommand*\newtabulinestyle [1]{% - {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}% -}% \newtabulinestyle -\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}% - \tabu@sanitizearg {#1}\@tempa - \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi - \global\expandafter\let - \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi -}% \tabu@newlinestyle -\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}% - \iftabu@everyrow - \toks@\expandafter{\expandafter \def \expandafter - \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}% - \gdef\tabu@ls@{\tabu@ls@L}% - \else - \global\let\tabu@ls@G \tabu@thestyle - \gdef\tabu@ls@{\tabu@ls@G}% - \fi - \tabu@everyrow@egroup -}% \tabulinestyle -\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor} -\def\tabu@rulecolor #1{\toks@{}% - \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1% - \tabu@temp - \tabu@rulearc -}% \tabu@rulecolor -\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp - \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}% - \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}% - \fi - \tabu@temp -}% \tabu@ruledrsc@ -\def\tabu@ruledrsc@ #1#{\tabu@rule@drsc@ {#1}} -\def\tabu@rule@drsc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}% - \else \toks@{\def\CT@drsc@{\color #1{#2}}}% - \fi - \else - \ifx \\#1#2\\\global\let\CT@drsc@ \relax - \else \gdef\CT@drsc@{\color #1{#2}}% - \fi - \fi - \tabu@rulearc -}% \tabu@rule@drsc@ -\def\tabu@rulearc #1#{\tabu@rule@arc@ {#1}} -\def\tabu@rule@arc@ #1#2{% - \iftabu@everyrow - \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}% - \else \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}% - \fi - \toks@\expandafter{\the\toks@ - \let\tabu@arc@L \CT@arc@ - \let\tabu@drsc@L \CT@drsc@ - \ignorespaces}% - \else - \ifx \\#1#2\\\gdef\CT@arc@{}% - \else \gdef\CT@arc@{\color #1{#2}}% - \fi - \global\let\tabu@arc@G \CT@arc@ - \global\let\tabu@drsc@G \CT@drsc@ - \fi - \tabu@everyrow@egroup -}% \tabu@rule@arc@ -\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1} -\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}} -\def\tabu@rowc@lors #1#2#3{% - \toks@{}\@defaultunits \count@ =\number0#2\relax \@nnil - \@defaultunits \tabu@start =\number0#1\relax \@nnil - \ifnum \count@<\tw@ \count@=\tw@ \fi - \advance\tabu@start \m@ne - \ifnum \tabu@start<\z@ \tabu@start \z@ \fi - \tabu@rowcolorseries #3\in@..\in@ \@nnil -}% \tabu@rowcolors -\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {% - \ifx \in@#1\relax - \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}% - \else \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@ - \fi - \else - \ifx \\#2\\\tabu@rowcolorserieserror \fi - \tabu@sanitizearg{#1}\tabu@temp - \tabu@sanitizearg{#2}\@tempa - \advance\count@ \m@ne - \iftabu@everyrow - \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{% - \ifnum ##2=\c@taburow - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi - \ifnum \c@taburow<##2 \else - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@ - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}\fi}% - }\edef\x{\noexpand\tabu@rc@ {\the\count@} - {\the\tabu@start} - {\tabu@temp} - {\@tempa}% - }\x - \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}% - \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}% - \else % inside \noalign - \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}% - \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}% - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}% - \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{% - \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne - \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi - \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}% - \rowcolor{tabu@rc@\the\tabu@nested}}% - }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x - \global\let\tabu@rc@G \tabu@rc@ - \fi - \fi - \tabu@everyrow@egroup -}% \tabu@rowcolorseries -\tabuDisableCommands {\let\tabu@rc@ \@empty } -\def\tabu@rowcolorserieserror {\PackageError{tabu} - {Invalid syntax for \string\taburowcolors - \MessageBreak Please look at the documentation!}\@ehd -}% \tabu@rowcolorserieserror -\newcommand*\tabureset {% - \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@ - \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}% -}% \tabureset -%% Parsing the line styles ------------------------------------------ -\def\tabu@getline #1{\begingroup - \csname \ifcsname if@safe@actives\endcsname % - @safe@activestrue\else - relax\fi \endcsname - \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa - \let\tabu@thestyle \relax - \ifcsname tabu@linestyle@\@tempa \endcsname - \edef\tabu@thestyle{\endgroup - \def\tabu@thestyle{\expandafter\noexpand - \csname tabu@linestyle@\@tempa\endcsname}% - }\tabu@thestyle - \else \expandafter\tabu@definestyle \tabu@temp \@nil - \fi -}% \tabu@getline -\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter - \tabu@thick \maxdimen \tabu@on \maxdimen \tabu@off \maxdimen - \let\tabu@c@lon \@undefined \let\tabu@c@loff \@undefined - \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs - \def\tabu@temp{\tabu@getparam{thick}}% - \else \def\tabu@temp{\tabu@getparam{thick}\maxdimen}% - \fi - {% - \let\tabu@ \relax - \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-)) - \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}% - \expandafter}\expandafter - \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-) - \def\;{\def\:}% - \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10) - \let\tabu@ \tabu@getcolor \:% all arguments are ready now ;-) - \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi - \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi - \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty \fi - \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen - \tabu@on \tabulineon \fi\fi - \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen - \tabu@off \tabulineoff \fi\fi - \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi - \in@true % - \else \in@false % - \fi - \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}% - \else \edef\tabu@thick{\the\tabu@thick}% - \fi - \edef \tabu@thestyle ##1##2{\endgroup - \def\tabu@thestyle{% - \ifin@ \noexpand\tabu@leadersstyle {\tabu@thick} - {\the\tabu@on}{##1} - {\the\tabu@off}{##2}% - \else \noexpand\tabu@rulesstyle - {##1\vrule width \tabu@thick}% - {##1\leaders \hrule height \tabu@thick \hfil}% - \fi}% - }\expandafter \expandafter - \expandafter \tabu@thestyle \expandafter - \expandafter \expandafter - {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}% -}% \tabu@definestyle -{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active - \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}} - \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space} -}% \catcode -\def\tabu@oxiii #1{% - \ifcase \ifx n#1\z@ \else - \ifx f#1\@ne\else - \tw@ \fi\fi - \expandafter\tabu@onxiii - \or \expandafter\tabu@ofxiii - \else o% - \fi#1}% -\def\tabu@onxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx \tabu@spxiii#2\@ne\else - \tw@ \fi\fi\fi - \tabu@getparam{on}#2\expandafter\@gobble - \or \expandafter\tabu@onxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}}% -\def\tabu@ofxiii #1#2{% - \ifx #2f\expandafter\tabu@offxiii - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@offxiii #1#2{% - \ifcase \ifx !#2\tw@ \else - \ifcat.\noexpand#2\z@ \else - \ifx\tabu@spxiii#2\@ne \else - \tw@ \fi\fi\fi - \tabu@getparam{off}#2\expandafter\@gobble - \or \expandafter\tabu@offxiii % (space is active) - \else o\expandafter\@firstofone - \fi{#1#2}} -\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=} -\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef - \ifx \tabu@#1\else % no more spec - \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi -}% \tabu@getcolor -\def\tabu@getc@l@r #1\tabu@ {% - \def\tabu@temp{#1}\tabu@strtrim \tabu@temp - \ifx \tabu@temp\@empty - \else%\ifcsname \string\color@\tabu@temp \endcsname % if the color exists - \ifx \tabu@theparam \tabu@off \let\tabu@c@loff \tabu@c@l@r - \else \let\tabu@c@lon \tabu@c@l@r - \fi - %\else \tabu@warncolour{\tabu@temp}% - \fi%\fi - \tabu@ % next spec -}% \tabu@getc@l@r -\def\tabu@warncolour #1{\PackageWarning{tabu} - {Color #1 is not defined. Default color used}% -}% \tabu@warncolour -\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}% - \ifx \tabu@leaders\tabu@leaders@G \else - \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi -}% \tabu@leadersstyle -\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined - \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}% -}% \tabu@rulesstyle -%% The leaders boxes ------------------------------------------------ -\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color - {\let\color \tabu@color % => during trials -> \color = \tabu@nocolor - {% % but the leaders boxes should have colors ! - \def\@therule{\vrule}\def\@thick{height}\def\@length{width}% - \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}% - \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thehleaders \tabu@theleaders - }% - {% - \def\@therule{\hrule}\def\@thick{width}\def\@length{height}% - \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}% - \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}% - \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}% - \global\let\tabu@thevleaders \tabu@theleaders - }% - \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}% - }% -}% \tabu@LEADERS -\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@} -\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color - \global\setbox \tabu@leads=\@box{% - {#3\tabu@therule{#1}{#2}}% - \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi - {#3\tabu@therule{#1}{#2}}}% - \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss - {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}% - \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {% - {##1\tabu@therule{#1}{#2}}% - \xleaders \copy\tabu@leads \@ss - \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}% - }\tabu@theleaders{#3}% -}% \tabu@l@@d@rs -%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ---------- -\newcommand*\tabu {\tabu@longfalse - \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}% - \else \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endtabu*\endcsname{\endtabu}% - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {tabu} -\let\tabu@tabular \tabular % -\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu} -\newcommand*\longtabu {\tabu@longtrue - \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi - \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}% - \LTchunksize=\@M - \expandafter\let\csname tabu*\endcsname \tabu - \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}% - \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts } - \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget -}% {longtabu} -\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu} -\def\tabu@nolongtabu{\PackageError{tabu} - {longtabu requires the longtable package}\@ehd} -%% Read the target and then : \tabular or \@array ------------------ -\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget } -\def\tabu@sett@rget {\tabu@target \z@ - \ifcase \ifx \bgroup\@let@token \z@ \else - \ifx \@sptoken\@let@token \@ne \else - \if t\@let@token \tw@ \else - \if s\@let@token \thr@@\else - \z@\fi\fi\fi\fi - \expandafter\tabu@begin - \or \expandafter\tabu@gobblespace\expandafter\tabu@settarget - \or \expandafter\tabu@to - \or \expandafter\tabu@spread - \fi -}% \tabu@sett@rget -\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget} -\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget} -\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target } -\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget } -\def\tabu@linegoalt@rget {% - \ifx \tabu@temp\LNGL@setlinegoal - \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal - \tabu@begin -}% \tabu@linegoalt@rget -\def\tabu@begin #1#{% - \iftabu@measuring \expandafter\tabu@nestedmeasure \fi - \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty - \else \edef\tabu@halignto{\tabu@halignto\the\tabu@target}% - \fi - \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil -}% \tabu@begin -\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup - \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}% - \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }% -}% \tabu@tabu@ -\def\tabu@nestedmeasure {% - \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax - \tabu@spreadtrue - \else \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}% - \expandafter\tabu@collectbody\expandafter\tabu@quickrule - \expandafter\endgroup - \fi -}% \tabu@nestedmeasure -\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target} -%% \tabu@setup \tabu@init \tabu@indent -\def\tabu@setup{\tabu@alloc@ - \ifcase \tabu@nested - \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@ - \let\tabu@afterendpar \par - \fi\fi\fi - \def\tabu@aligndefault{c}\tabu@init \tabu@indent - \else % - \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth - \fi - \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined - \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}% - \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu... - \let\@endpbox \tabu@endpbox % idem " " " " " " - \let\@tabarray \tabu@tabarray % idem " " " " " " - \tabu@setcleanup \tabu@setreset -}% \tabu@setup -\def\tabu@init{\tabu@starttimer \tabu@measuringfalse - \edef\tabu@hfuzz {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}% - \let\firsthline \tabu@firsthline \let\lasthline \tabu@lasthline - \let\firstline \tabu@firstline \let\lastline \tabu@lastline - \let\hline \tabu@hline \let\@xhline \tabu@xhline - \let\color \tabu@color \let\@arstrutbox \tabu@arstrutbox - \iftabu@colortbl\else\let\LT@@hline \tabu@LT@@hline \fi - \tabu@trivlist % - \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext - \let\@xfootnote \tabu@xfootnote \let\centering \tabu@centering - \let\raggedright \tabu@raggedright \let\raggedleft \tabu@raggedleft - \let\tabudecimal \tabu@tabudecimal \let\Centering \tabu@Centering - \let\RaggedRight \tabu@RaggedRight \let\RaggedLeft \tabu@RaggedLeft - \let\justifying \tabu@justifying \let\rowfont \tabu@rowfont - \let\fbox \tabu@fbox \let\color@b@x \tabu@color@b@x - \let\tabu@@everycr \everycr \let\tabu@@everypar \everypar - \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok \tabu@prepnext@tok - \let\tabu@multicolumnORI\multicolumn \let\multicolumn \tabu@multicolumn - \let\tabu@startpbox \@startpbox % for nested tabu inside longtabu pfff !!! - \let\tabu@endpbox \@endpbox % idem " " " " " " " - \let\tabu@tabarray \@tabarray % idem " " " " " " " - \tabu@adl@fix \let\endarray \tabu@endarray % colortbl & arydshln (delarray) - \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi -}% \tabu@init -\def\tabu@indent{% correction for indentation - \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget - \everypar\expandafter{% - \the\everypar\everypar\expandafter{\the\everypar}% - \setbox\z@=\lastbox - \ifdim\wd\z@>\z@ \edef\tabu@thetarget - {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi - \box\z@}% - \fi\fi -}% \tabu@indent -\def\tabu@setcleanup {% saves last global assignments - \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax - \def\tabu@aftergroupcleanup{% - \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}% - \else - \def\tabu@aftergroupcleanup{% - \aftergroup\aftergroup\aftergroup\tabu@cleanup - \let\tabu@aftergroupcleanup \relax}% - \fi - \let\tabu@arc@Gsave \tabu@arc@G - \let\tabu@arc@G \tabu@arc@L % - \let\tabu@drsc@Gsave \tabu@drsc@G - \let\tabu@drsc@G \tabu@drsc@L % - \let\tabu@ls@Gsave \tabu@ls@G - \let\tabu@ls@G \tabu@ls@L % - \let\tabu@rc@Gsave \tabu@rc@G - \let\tabu@rc@G \tabu@rc@L % - \let\tabu@evr@Gsave \tabu@evr@G - \let\tabu@evr@G \tabu@evr@L % - \let\tabu@celllalign@save \tabu@celllalign - \let\tabu@cellralign@save \tabu@cellralign - \let\tabu@cellleft@save \tabu@cellleft - \let\tabu@cellright@save \tabu@cellright - \let\tabu@@celllalign@save \tabu@@celllalign - \let\tabu@@cellralign@save \tabu@@cellralign - \let\tabu@@cellleft@save \tabu@@cellleft - \let\tabu@@cellright@save \tabu@@cellright - \let\tabu@rowfontreset@save \tabu@rowfontreset - \let\tabu@@rowfontreset@save\tabu@@rowfontreset - \let\tabu@rowfontreset \@empty - \edef\tabu@alloc@save {\the\tabu@alloc}% restore at \tabu@reset - \edef\c@taburow@save {\the\c@taburow}% - \edef\tabu@naturalX@save {\the\tabu@naturalX}% - \let\tabu@naturalXmin@save \tabu@naturalXmin - \let\tabu@naturalXmax@save \tabu@naturalXmax - \let\tabu@mkarstrut@save \tabu@mkarstrut - \edef\tabu@clarstrut{% - \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax - \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax - \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}% -}% \tabu@setcleanup -\def\tabu@cleanup {\begingroup - \globaldefs\@ne \tabu@everyrowtrue - \let\tabu@arc@G \tabu@arc@Gsave - \let\CT@arc@ \tabu@arc@G - \let\tabu@drsc@G \tabu@drsc@Gsave - \let\CT@drsc@ \tabu@drsc@G - \let\tabu@ls@G \tabu@ls@Gsave - \let\tabu@ls@ \tabu@ls@G - \let\tabu@rc@G \tabu@rc@Gsave - \let\tabu@rc@ \tabu@rc@G - \let\CT@do@color \relax - \let\tabu@evr@G \tabu@evr@Gsave - \let\tabu@celllalign \tabu@celllalign@save - \let\tabu@cellralign \tabu@cellralign@save - \let\tabu@cellleft \tabu@cellleft@save - \let\tabu@cellright \tabu@cellright@save - \let\tabu@@celllalign \tabu@@celllalign@save - \let\tabu@@cellralign \tabu@@cellralign@save - \let\tabu@@cellleft \tabu@@cellleft@save - \let\tabu@@cellright \tabu@@cellright@save - \let\tabu@rowfontreset \tabu@rowfontreset@save - \let\tabu@@rowfontreset \tabu@@rowfontreset@save - \tabu@naturalX =\tabu@naturalX@save - \let\tabu@naturalXmax \tabu@naturalXmax@save - \let\tabu@naturalXmin \tabu@naturalXmin@save - \let\tabu@mkarstrut \tabu@mkarstrut@save - \c@taburow =\c@taburow@save - \ifcase \tabu@nested \tabu@alloc \m@ne\fi - \endgroup % - \ifcase \tabu@nested - \the\tabu@footnotes \global\tabu@footnotes{}% - \tabu@afterendpar \tabu@elapsedtime - \fi - \tabu@clarstrut - \everyrow\expandafter {\tabu@evr@G}% -}% \tabu@cleanup -\let\tabu@afterendpar \relax -\def\tabu@setreset {% - \edef\tabu@savedparams {% \relax for \tabu@message@save - \ifmmode \col@sep \the\arraycolsep - \else \col@sep \the\tabcolsep \fi \relax - \arrayrulewidth \the\arrayrulewidth \relax - \doublerulesep \the\doublerulesep \relax - \extratabsurround \the\extratabsurround \relax - \extrarowheight \the\extrarowheight \relax - \extrarowdepth \the\extrarowdepth \relax - \abovetabulinesep \the\abovetabulinesep \relax - \belowtabulinesep \the\belowtabulinesep \relax - \def\noexpand\arraystretch{\arraystretch}% - \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}% - \begingroup - \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu - \ifx \tabu@arc@L\relax \else \tabu@setsave \tabu@arc@L \fi - \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi - \tabu@setsave \tabu@ls@L \tabu@setsave \tabu@evr@L - \expandafter \endgroup \expandafter - \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena - \let\tabu@arc@G \tabu@arc@L - \let\tabu@drsc@G \tabu@drsc@L - \let\tabu@ls@G \tabu@ls@L - \let\tabu@rc@G \tabu@rc@L - \let\tabu@evr@G \tabu@evr@L}% - \def\tabu@reset{\tabu@savedparams - \tabu@everyrowtrue \c@taburow \z@ - \let\CT@arc@ \tabu@arc@L - \let\CT@drsc@ \tabu@drsc@L - \let\tabu@ls@ \tabu@ls@L - \let\tabu@rc@ \tabu@rc@L - \global\tabu@alloc \tabu@alloc@save - \everyrow\expandafter{\tabu@evr@L}}% -}% \tabu@reset -\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}} -\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}} -%% The Rewriting Process ------------------------------------------- -\def\tabu@newcolumntype #1{% - \expandafter\tabu@new@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@newcolumntype -\def\tabu@new@columntype #1#2#3{% - \def#1##1#3{\NC@{##1}}% - \let#2\relax \newcommand*#2% -}% \tabu@new@columntype -\def\tabu@privatecolumntype #1{% - \expandafter\tabu@private@columntype - \csname NC@find@\string#1\expandafter\endcsname - \csname NC@rewrite@\string#1\expandafter\endcsname - \csname tabu@NC@find@\string#1\expandafter\endcsname - \csname tabu@NC@rewrite@\string#1\endcsname - {#1}% -}% \tabu@privatecolumntype -\def\tabu@private@columntype#1#2#3#4{% - \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}% - \tabu@new@columntype#3#4% -}% \tabu@private@columntype -\let\tabu@privatecolumns \@empty -\newcommand*\tabucolumn [1]{\expandafter \def \expandafter - \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns - \NC@do #1}}% -\let\tabu@highprioritycolumns \@empty -%% The | ``column'' : rewriting process -------------------------- -\tabu@privatecolumntype |{\tabu@rewritevline} -\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}% - \expandafter \NC@find \tabu@rewritten} -\def\tabu@lines #1{% - \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi - \NC@list\expandafter{\the\NC@list \NC@do #1}% -}% \tabu@lines@ -\def\tabu@vlinearg #1{% - \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}% - \else\tabu@getline {#1}% - \fi - \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}% - }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}% - \expandafter \tabu@keepls \tabu@thestyle \@nil -}% \tabu@vlinearg -\def\tabu@keepls #1\@nil{% - \ifcat $\@cdr #1\@nil $% - \ifx \relax#1\else - \ifx \tabu@ls@#1\else - \let#1\relax - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@savels\noexpand#1}\fi\fi\fi -}% \tabu@keepls -\def\tabu@thevline {\begingroup - \ifdefined\tabu@leaders - \setbox\@tempboxa=\vtop to\dimexpr - \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}% - \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox - \box\@tempboxa - \else - \tabu@thevrule - \fi \endgroup -}% \tabu@thevline -\def\tabu@savels #1{% - \expandafter\let\csname\string#1\endcsname #1% - \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset - \tabu@resetls#1}}% -\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}% -%% \multicolumn inside tabu environment ----------------------------- -\tabu@newcolumntype \tabu@rewritemulticolumn{% - \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \tabu@savedecl - \tabu@privatecolumns - \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}% - \let\tabu@savels \relax - \NC@find -}% \tabu@rewritemulticolumn -\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup} -\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI} -\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup - \tabu@everyrowtrue - \NC@list{\NC@do \tabu@rewritemulticolumn}% - \expandafter\@gobbletwo % gobbles \multispan{#1} - \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}% - {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi - {#3}}% -}% \tabu@multic@lumn -%% The X column(s): rewriting process ----------------------------- -\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}} -\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten } -\def\tabu@siunitx #1{\@ifnextchar \bgroup - {\tabu@rewriteX@Ss{#1}} - {\tabu@nosiunitx{#1}}} -\def\tabu@rewriteX@Ss #1#2{\@temptokena{}% - \@defaultunits \let\tabu@temp =#2\relax\@nnil - \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi - \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}% - }\expandafter\NC@find \the\@temptokena \relax - }\expandafter\NC@rewrite@S \@gobble #2\relax - \else \tabu@siunitxerror - \fi - \expandafter \NC@find \tabu@rewritten -}% \tabu@rewriteX@Ss -\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column ! - \MessageBreak X column can only embed siunitx S or s columns}\@ehd -}% \tabu@siunitxerror -\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}% - \iftabu@measuring - \else \tabu@measuringtrue % first X column found in the preamble - \let\@halignto \relax \let\tabu@halignto \relax - \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@ - \else \tabu@spreadtarget \z@ \fi - \ifdim \tabu@target=\z@ - \setlength\tabu@target \tabu@thetarget - \tabu@message{\tabu@message@defaulttarget}% - \else \tabu@message{\tabu@message@target}\fi - \fi -}% \tabu@rewriteX -\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax - \def\tabu@rewritten{l}} -\def\tabu@Xarg #1#2#3{% - \advance\tabu@Xcol \@ne \let\tabu@Xlcr \@empty - \let\tabu@Xdisp \@empty \let\tabu@Xmath \@empty - \ifx\\#1\\% - \def\tabu@rewritten{p}\tabucolX \p@ % - \else - \let\tabu@rewritten \@empty \let\tabu@temp \@empty \tabucolX \z@ - \tabu@Xparse {}#1\relax - \fi - \tabu@Xrewritten{#2}{#3}% -}% \tabu@Xarg -\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest} -\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}} -\def\tabu@Xtest{% - \ifcase \ifx \relax\@let@token \z@ \else - \if ,\@let@token \m@ne\else - \if p\@let@token 1\else - \if m\@let@token 2\else - \if b\@let@token 3\else - \if l\@let@token 4\else - \if c\@let@token 5\else - \if r\@let@token 6\else - \if j\@let@token 7\else - \if L\@let@token 8\else - \if C\@let@token 9\else - \if R\@let@token 10\else - \if J\@let@token 11\else - \ifx \@sptoken\@let@token 12\else - \if .\@let@token 13\else - \if -\@let@token 13\else - \ifcat $\@let@token 14\else - 15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \or \tabu@Xtype {p}% - \or \tabu@Xtype {m}% - \or \tabu@Xtype {b}% - \or \tabu@Xalign \raggedright\relax - \or \tabu@Xalign \centering\relax - \or \tabu@Xalign \raggedleft\relax - \or \tabu@Xalign \tabu@justify\relax - \or \tabu@Xalign \RaggedRight\raggedright - \or \tabu@Xalign \Centering\centering - \or \tabu@Xalign \RaggedLeft\raggedleft - \or \tabu@Xalign \justifying\tabu@justify - \or \expandafter \tabu@Xparsespace - \or \expandafter \tabu@Xcoef - \or \expandafter \tabu@Xm@th - \or \tabu@Xcoef{}% - \else\expandafter \tabu@Xparse - \fi -}% \tabu@Xtest -\def\tabu@Xalign #1#2{% - \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu} - {Duplicate horizontal alignment specification}\fi - \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax - \else \def\tabu@Xlcr{#2}\let#2\relax\fi - \expandafter\tabu@Xparse -}% \tabu@Xalign -\def\tabu@Xtype #1{% - \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu} - {Duplicate vertical alignment specification}\fi - \def\tabu@rewritten{#1}\expandafter\tabu@Xparse -}% \tabu@Xtype -\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}% - \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi -}% \tabu@Xcoef -\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@ - \tabu@Xparse{}% -}% \tabu@Xc@ef -\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp} -\def\tabu@Xd@sp{\let\tabu@Xmath=$% - \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}% - \expandafter\tabu@Xparse - \else \expandafter\tabu@Xparse\expandafter{\expandafter}% - \fi -}% \tabu@Xd@sp -\def\tabu@Xrewritten {% - \ifx \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi - \ifdim \tabucolX<\z@ \tabu@negcoeftrue - \else\ifdim \tabucolX=\z@ \tabucolX \p@ - \fi\fi - \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}% - \edef\tabu@Xcoefs{\tabu@Xcoefs \tabu@ \tabu@temp}% - \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{% - >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}% - \tabu@rewritten {\tabu@hsize \tabu@temp}% - <{##2\ifx$\tabu@Xmath$\fi}}% - }\tabu@rewritten -}% \tabu@Xrewritten -\def\tabu@hsize #1#2{% - \ifdim #2\p@<\z@ - \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else - \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi - \fi - \else #2\tabucolX - \fi -}% \tabu@hsize -%% \usetabu and \preamble: rewriting process --------------------- -\tabu@privatecolumntype \usetabu [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\let\tabu@rewriteX \tabu@rewriteXrestore - \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}% - \fi -}% \NC@rewrite@\usetabu -\tabu@privatecolumntype \preamble [1]{% - \ifx\\#1\\\tabu@saveerr{}\else - \@ifundefined{tabu@saved@\string#1} - {\tabu@saveerr{#1}} - {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}% - \fi -}% \NC@rewrite@\preamble -%% Controlling the rewriting process ------------------------------- -\tabu@newcolumntype \tabu@rewritefirst{% - \iftabu@long \aftergroup \tabu@longpream % - \else \aftergroup \tabu@pream - \fi - \let\tabu@ \relax \let\tabu@hsize \relax - \let\tabu@Xcoefs \@empty \let\tabu@savels \relax - \tabu@Xcol \z@ \tabu@cnt \tw@ - \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse - \global\setbox\@arstrutbox \box\@arstrutbox - \NC@list{\NC@do *}\tabu@textbar \tabu@lines - \NC@list\expandafter{\the\NC@list \NC@do X}% - \iftabu@siunitx % - \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi - \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}% - \expandafter\def\expandafter\tabu@NC@list\expandafter{% - \the\expandafter\NC@list \tabu@NC@list}% % * | X S - \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu - \expandafter \NC@do \expandafter\preamble - \the\NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \tabu@savedecl - \tabu@privatecolumns - \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle -}% NC@rewrite@\tabu@rewritefirst -\tabu@newcolumntype \tabu@rewritemiddle{% - \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast -}% \NC@rewrite@\tabu@rewritemiddle -\tabu@newcolumntype \tabu@rewritelast{% - \ifx \tabu@temp\tabu@prev \advance\tabu@cnt \m@ne - \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle - \NC@do \tabu@rewritelast}% - \else \let\tabu@prev\tabu@temp - \fi - \ifcase \tabu@cnt \expandafter\tabu@endrewrite - \else \expandafter\NC@find \expandafter\tabu@rewritemiddle - \fi -}% \NC@rewrite@\tabu@rewritelast -%% Choosing the strategy -------------------------------------------- -\def\tabu@endrewrite {% - \let\tabu@temp \NC@find - \ifx \@arrayright\relax \let\@arrayright \@empty \fi - \count@=% - \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print - \iftabu@measuring - \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer - \tabu@target \csname tabu@\the\tabu@nested.T\endcsname - \tabucolX \csname tabu@\the\tabu@nested.X\endcsname - \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}% - \fi - \else\iftabu@measuring 4 % X columns - \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer - \tabu@target \the\tabu@target - \tabu@spreadtarget \the\tabu@spreadtarget}% - \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}% - \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}% - \let\tabu@Xcoefs \relax - \else\ifcase\tabu@nested \thr@@ % outer, no X - \global\let\tabu@afterendpar \relax - \else \@ne % inner, no X, outer in mode 1 or 2 - \fi - \ifdefined\tabu@usetabu - \else \ifdim\tabu@target=\z@ - \else \let\tabu@temp \tabu@extracolsep - \fi\fi - \fi - \fi - \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}% - \tabu@temp -}% \tabu@endrewrite -\def\tabu@extracolsep{\@defaultunits \expandafter\let - \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil - \ifx \tabu@temp\@sptoken - \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep - \else - \edef\tabu@temp{\noexpand\NC@find - \if |\noexpand\tabu@temp @% - \else\if !\noexpand\tabu@temp @% - \else !% - \fi\fi - {\noexpand\extracolsep\noexpand\@flushglue}}% - \fi - \tabu@temp -}% \tabu@extrac@lsep -%% Implementing the strategy ---------------------------------------- -\long\def\tabu@pream #1\@preamble {% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\tabu@aftergroupcleanup}% - \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody - \@preamble}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@pream -\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{% - \let\tabu@ \tabu@@ \tabu@mkpreambuffer \tabu@aftergroupcleanup - \NC@list\expandafter {\tabu@NC@list}% in case of nesting... - \let\tabu@savedpreamble \@preamble - \global\let\tabu@elapsedtime \relax - \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}% - \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens ) - \tabu@select -}% \tabu@longpream -\def\tabu@select {% - \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi - \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi - \ifcase \count@ - \global\let\tabu@elapsedtime \relax - \tabu@seteverycr - \expandafter \tabuthepreamble % vertical adjustment (inherited from outer) - \or % exit in vertical measure + struts per cell because no X and outer in mode 3 - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \tabu@seteverycr - \expandafter \tabuthepreamble - \or % exit without measure because no X and outer in mode 4 - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@seteverycr - \expandafter \tabuthepreamble - \else % needs trials - \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty - \tabu@savecounters - \expandafter \tabu@setstrategy - \fi -}% \tabu@select -\def\tabu@@ {\gdef\tabu@mkpreambuffer} -%% Protections to set up before trials ------------------------------ -\def\tabu@setstrategy {\begingroup % - \tabu@trialh@@k \tabu@cnt \z@ % number of trials - \hbadness \@M \let\hbadness \@tempcnta - \hfuzz \maxdimen \let\hfuzz \@tempdima - \let\write \tabu@nowrite\let\GenericError \tabu@GenericError - \let\savetabu \@gobble \let\tabudefaulttarget \linewidth - \let\@footnotetext \@gobble \let\@xfootnote \tabu@xfootnote - \let\color \tabu@nocolor\let\rowcolor \tabu@norowcolor - \let\tabu@aftergroupcleanup \relax % only after the last trial - \tabu@mkpreambuffer - \ifnum \count@>\thr@@ \let\@halignto \@empty \tabucolX@init - \def\tabu@lasttry{\m@ne\p@}\fi - \begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi % - \tabu@collectbody \tabu@strategy % -}% \tabu@setstrategy -\def\tabu@savecounters{% - \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}% - \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax -}% \tabu@savecounters -\def\tabucolX@init {% \tabucolX <= \tabu@target / (sum coefs > 0) - \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs - \ifdim \dimen@>\z@ - \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \fi -}% \tabucolX@init -\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum - \ifdim #2\p@>\z@ #2\p@ \advance\dimen@ #2\p@ - \else -#2\p@ \tabu@negcoeftrue - \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax - \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi - \tabu@wddef{#1}{0pt}% - \fi -}% \tabu@Xinit -%% Collecting the environment body ---------------------------------- -\long\def\tabu@collectbody #1#2\end #3{% - \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}% - \ifx \tabu@stack\@empty - \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}% - \def\tabu@end@envir{\end{#3}}% - \iftabuscantokens - \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}% - \else \def\tabu@endenvir {\let\endarray \@empty - \end{#3}\tabu@gobbleX}% - \fi - \else \def\tabu@endenvir {\end{#3}}\fi}% - \let\tabu@collectbody \tabu@endofcollect - \else\def\tabu@temp{#3}% - \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }% - \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}% - \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}% - \else \toks@\expandafter{\the\toks@ #2\end{#3}}% - \fi\fi\fi - \fi - \tabu@collectbody{#1}% -}% \tabu@collectbody -\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}% -\def\tabu@endofcollect #1{\ifnum0=`{}\fi - \expandafter\endgroup \the\toks@ #1% -}% \tabu@endofcollect -%% The trials: switching between strategies ------------------------- -\def\tabu@strategy {\relax % stops \count@ assignment ! - \ifcase\count@ % case 0 = print with vertical adjustment (outer is finished) - \expandafter \tabu@endoftrials - \or % case 1 = exit in vertical measure (outer in mode 3) - \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}% - \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}% - \expandafter \tabu@endoftrials - \or % case 2 = exit with a rule replacing the table (outer in mode 4) - \expandafter \tabu@quickend - \or % case 3 = outer is in mode 3 because of no X - \begingroup - \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \expandafter \tabu@measuring - \else % case 4 = horizontal measure - \begingroup - \global\let\tabu@elapsedtime \tabu@message@etime - \long\def\multicolumn##1##2##3{\multispan{##1}}% - \let\tabu@startpboxORI \@startpbox - \iftabu@spread - \def\tabu@naturalXmax {\z@}% - \let\tabu@naturalXmin \tabu@naturalXmax - \tabu@evr{\global\tabu@naturalX \z@}% - \let\@startpbox \tabu@startpboxmeasure - \else\iftabu@negcoef - \let\@startpbox \tabu@startpboxmeasure - \else \let\@startpbox \tabu@startpboxquick - \fi\fi - \expandafter \tabu@measuring - \fi -}% \tabu@strategy -\def\tabu@measuring{\expandafter \tabu@trial \expandafter - \count@ \the\count@ \tabu@endtrial -}% \tabu@measuring -\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi} -\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \csname tabu@adl@endtrial\endcsname - \endarray}$\egroup % got \tabu@box -}% \tabu@shorttrial -\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr - \ifx \tabu@savecounters\relax \else - \let\tabu@savecounters \relax \tabu@clckpt \fi - \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi - \expandafter{\expandafter \tabuthepreamble - \the\tabu@thebody - \tabuendlongtrial}\egroup % got \tabu@box -}% \tabu@longtrial -\def\tabuendlongtrial{% no @ allowed for \scantokens - \LT@echunk \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne - \LT@get@widths -}% \tabuendlongtrial -\def\tabu@adl@endtrial{% - \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails ! -\def\tabu@seteverycr {\tabu@reset - \everycr \expandafter{\the\everycr \tabu@everycr}% - \let\everycr \tabu@noeverycr % -}% \tabu@seteverycr -\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@} -\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr} -\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi} -\def\tabu@endoftrials {% - \iftabuscantokens \expandafter\@firstoftwo - \else \expandafter\@secondoftwo - \fi - {\expandafter \tabu@closetrialsgroup \expandafter - \tabu@rescan \expandafter{% - \expandafter\tabuthepreamble - \the\expandafter\tabu@thebody - \iftabu@long \else \endarray \fi}} - {\expandafter\tabu@closetrialsgroup \expandafter - \tabuthepreamble - \the\tabu@thebody}% - \tabu@endenvir % Finish ! -}% \tabu@endoftrials -\def\tabu@closetrialsgroup {% - \toks@\expandafter{\tabu@endenvir}% - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target - \tabu@cnt \the\tabu@cnt - \def\noexpand\tabu@endenvir{\the\toks@}% - %Quid de \@halignto = \tabu@halignto ?? - }% \tabu@bufferX - \tabu@bufferX - \ifcase\tabu@nested % print out (outer in mode 0) - \global\tabu@cnt \tabu@cnt - \tabu@evr{\tabu@verticaldynamicadjustment}% - \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty - \let\@finalstrut \tabu@finalstrut - \else % vertical measure of nested tabu - \tabu@evr{\tabu@verticalinit}% - \tabu@celllalign@def{\tabu@verticalmeasure}% - \def\tabu@cellralign{\tabu@verticalspacing}% - \fi - \tabu@clckpt \let\@halignto \tabu@halignto - \let\@halignto \@empty - \tabu@seteverycr - \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@ - \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts) - \fi\fi -}% \tabu@closetrialsgroup -\def\tabu@quickend {\expandafter \endgroup \expandafter - \tabu@target \the\tabu@target \tabu@quickrule - \let\endarray \relax \tabu@endenvir -}% \tabu@quickend -\def\tabu@endtrial {\relax % stops \count@ assignment ! - \ifcase \count@ \tabu@err % case 0 = impossible here - \or \tabu@err % case 1 = impossible here - \or \tabu@err % case 2 = impossible here - \or % case 3 = outer goes into mode 0 - \def\tabu@bufferX{\endgroup}\count@ \z@ - \else % case 4 = outer goes into mode 3 - \iftabu@spread \tabu@spreadarith % inner into mode 1 (outer in mode 3) - \else \tabu@arith % or 2 (outer in mode 4) - \fi - \count@=% - \ifcase\tabu@nested \thr@@ % outer goes into mode 3 - \else\iftabu@measuring \tw@ % outer is in mode 4 - \else \@ne % outer is in mode 3 - \fi\fi - \edef\tabu@bufferX{\endgroup - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% - \fi - \expandafter \tabu@bufferX \expandafter - \count@ \the\count@ \tabu@strategy -}% \tabu@endtrial -\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}} -%% The algorithms: compute the widths / stop or go on --------------- -\def\tabu@arithnegcoef {% - \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs -}% \tabu@arithnegcoef -\def\tabu@arith@negcoef #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ % saturated by definition - \advance\@tempdima #2\tabucolX - \else - \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated - \advance\dimen@ -#2\p@ - \advance\@tempdima -#2\tabucolX - \else - \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised - \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised - \advance\dimen@ -#2\p@ % saturated (natural width = tabu@target) - \fi - \fi - \fi -}% \tabu@arith@negcoef -\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@ - \ifdim \@tempdima=\z@ - \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}% - \else - \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2} - *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}% - \fi -}% \tabu@givespace -\def\tabu@arith {\advance\tabu@cnt \@ne - \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi - \tabu@arithnegcoef - \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % - \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax - \tabu@message{\tabu@message@arith}% - \ifdim \tabu@DELTA <\tabu@hfuzz - \ifdim \tabu@DELTA<\z@ % wd (tabu)<\tabu@target ? - \let\tabu@ \tabu@givespace \tabu@Xcoefs - \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message - \else % already converged: nothing to do but nearly impossible... - \fi - \tabucolX \maxdimen - \tabu@measuringfalse - \else % need for narrower X columns - \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax - \tabu@measuringtrue - \@whilesw \iftabu@measuring\fi {% - \advance\tabu@cnt \@ne - \tabu@arithnegcoef - \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here - \tabu@message{\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else - \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@ - \fi}% - \ifdim -\tabu@DELTA<\tabu@hfuzz - \advance\@tempdima \@tempdimb % for message - \tabu@measuringfalse - \else - \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax - \fi - }% - \fi - \tabu@message{\tabu@message@reached}% - \edef\tabu@bufferX{\endgroup \tabu@cnt \the\tabu@cnt - \tabucolX \the\tabucolX - \tabu@target \the\tabu@target}% -}% \tabu@arith -\def\tabu@spreadarith {% - \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs - \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}% - \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax - \iftabu@measuring - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}% - \else - \tabu@message{\tabu@message@spreadarith}% - \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target - \tabu@message{(tabu) spread - \ifdim \@tempdimc>\tabu@target useless here: default target used% - \else too large: reduced to fit default target\fi.}% - \else - \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax - \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}% - \fi - \begingroup \let\tabu@wddef \@gobbletwo - \@tempdimb \@tempdima - \tabucolX@init - \tabu@arithnegcoef - \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax - \expandafter\endgroup \expandafter\tabucolX \the\tabucolX - \tabu@arith - \fi -}% \tabu@spreadarith -\def\tabu@spread@arith #1#2{% - \ifdim #2\p@>\z@ \advance\dimen@ #2\p@ - \else \advance\@tempdima \tabu@wd{#1}\relax - \fi -}% \tabu@spread@arith -%% Reporting in the .log file --------------------------------------- -\def\tabu@message@defaulttarget{% - \ifnum\tabu@nested=\z@^^J(tabu) Default target: - \ifx\tabudefaulttarget\linewidth \string\linewidth - \ifdim \tabu@thetarget=\linewidth \else - -\the\dimexpr\linewidth-\tabu@thetarget\fi = - \else\ifx\tabudefaulttarget\linegoal\string\linegoal= - \fi\fi - \else (tabu) Default target (nested): \fi - \the\tabu@target \on@line - \ifnum\tabu@nested=\z@ , page \the\c@page\fi} -\def\tabu@message@target {^^J(tabu) Target specified: - \the\tabu@target \on@line, page \the\c@page} -\def\tabu@message@arith {\tabu@header - \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@ - \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@ - \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@ - \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else - \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@ - \fi -}% \tabu@message@arith -\def\tabu@message@spreadarith {\tabu@spreadheader - \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@ - \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@ - \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@ - \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@ - \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target - \else \@tempdimc+\tabu@spreadtarget \fi - {}{}{}{}{}\@@} -\def\tabu@message@negcoef #1#2{ - \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]: - \space width = \tabu@wd {#1} - \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname - \ifdim -\tabu@pt#2\tabucolX<\tabu@target - < \number-\rem@pt#2 X - = \the\dimexpr -\tabu@pt#2\tabucolX \relax - \else - <= \the\tabu@target\space < \number-\rem@pt#2 X\fi} -\def\tabu@message@reached{\tabu@header - ******* Reached Target: - hfuzz = \tabu@hfuzz\on@line\space *******} -\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}% - \tabu@message{(tabu)\tabu@spaces Time elapsed during measure: - \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec - \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime) - -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax - *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space - cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}} -\def\tabu@message@verticalsp {% - \ifdim \@tempdima>\tabu@ht - \ifdim \@tempdimb>\tabu@dp - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@ - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J% - \else - \expandafter\expandafter\expandafter\string\tabu@ht = - \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J% - \fi - \else\ifdim \@tempdimb>\tabu@dp - \tabu@spaces\tabu@spaces\tabu@spaces - \expandafter\expandafter\expandafter\string\tabu@dp = - \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi - \fi -}% \tabu@message@verticalsp -\edef\tabu@spaces{\@spaces} -\def\tabu@strippt{\expandafter\tabu@pt\the} -{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}} -\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr} -\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt} -\def\do #1{% - \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{% - \ifnum##1<10 #1 #1\else - \ifnum##1<100 #1 \else - \ifnum##1<\@m #1\fi\fi\fi - ##1.##2##3##4##5##6##7##8#1}% - \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }% - \def\tabu@titles{\ifnum \tabu@nested=\z@ - (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target - #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}% - \def\tabu@spreadheader{% - (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min. - #1 New Target^^J% - (tabu) sprd} - \def\tabu@message@save {\begingroup - \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@} - \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt - \dimexpr####1\p@{ }{ }}}% - \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}% - \let\CT@arc@ \relax \let\@preamble \@gobble - \let\tabu@savedpream \@firstofone - \let\tabu@savedparams \@firstofone - \def\tabu@target ####1\relax {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}% - \def\tabucolX ####1\relax {(tabu) X columns width#1 = \x{####1}^^J}% - \def\tabu@nbcols ####1\relax {(tabu) Number of columns: \z{####1}^^J}% - \def\tabu@aligndefault ####1{(tabu) Default alignment: #1 #1 ####1^^J}% - \def\col@sep ####1\relax {(tabu) column sep #1 #1 #1 = \x{####1}^^J}% - \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}% - \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}% - \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}% - \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}% - \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}% - \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }% - \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}% - \def\arraystretch ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}% - \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}% - \def\tabu@arc@L ####1{(tabu) taburulecolor #1 #1 = ####1^^J}% - \def\tabu@drsc@L ####1{(tabu) tabudoublerulecolor= ####1^^J}% - \def\tabu@evr@L ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}% - \def\tabu@ls@L ####1{(tabu) line style = \detokenize{####1}^^J}% - \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}% - \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}% - \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo - \tabu@message{% - (tabu) \string\savetabu{\tabu@temp}: \on@line^^J% - \tabu@usetabu \@nil^^J}% - \endgroup} -}\do{ } -%% Measuring the natural width (varwidth) - store the results ------- -\def\tabu@startpboxmeasure #1{\bgroup % entering \vtop - \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}% - \ifodd 1\ifx \tabu@temp\@empty 0 \else % starts with \tabu@hsize ? - \iftabu@spread \else % if spread -> measure - \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure - \let\@startpbox \tabu@startpboxORI % restore immediately (nesting) - \tabu@measuringtrue % for the quick option... - \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi - \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target - \tabu@target=\tabu@temp\tabucolX \fi\fi - \setbox\tabu@box \hbox \bgroup - \begin{varwidth}\tabu@target - \let\FV@ListProcessLine \tabu@FV@ListProcessLine % \hbox to natural width... - \narrowragged \arraybackslash \parfillskip \@flushglue - \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi - \bgroup \aftergroup\tabu@endpboxmeasure - \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi - \else \expandafter\@gobble - \tabu@startpboxquick{#1}% \@gobble \bgroup - \fi -}% \tabu@startpboxmeasure -\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty - \bgroup\color@begingroup} -\def\tabu@endpboxmeasure {% - \@finalstrut \@arstrutbox - \end{varwidth}\egroup % - \ifdim \tabu@temp\p@ <\z@ % neg coef - \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box - \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}% - \tabu@debug{\tabu@message@endpboxmeasure}% - \fi - \else % spread coef>0 - \global\advance \tabu@naturalX \wd\tabu@box - \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax - \ifdim \tabu@naturalXmax <\tabu@naturalX - \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi - \ifdim \tabu@naturalXmin <\@tempdima - \xdef\tabu@naturalXmin {\the\@tempdima}\fi - \fi - \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target -}% \tabu@endpboxmeasure -\def\tabu@wddef #1{\expandafter\xdef - \csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@wd #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname} -\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd - \the\tabu@Xcol. X[\tabu@temp]: - target = \the\tabucolX \space - \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol - =\tabu@wd\tabu@Xcol -}% \tabu@message@endpboxmeasure -\def\tabu@startpboxquick {\bgroup - \let\@startpbox \tabu@startpboxORI % restore immediately - \let\tabu \tabu@quick % \begin is expanded before... - \expandafter\@gobble \@startpbox % gobbles \bgroup -}% \tabu@startpboxquick -\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi - \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick -}% \tabu@quick -\def\tabu@endquick {% - \ifodd 1\ifx\tabu@end@envir\tabu@endtabu \else - \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax - \endgroup - \else \let\endtabu \relax - \tabu@end@envir - \fi -}% \tabu@quick -\def\tabu@endtabu {\end{tabu}} -\def\tabu@endtabus {\end{tabu*}} -%% Measuring the heights and depths - store the results ------------- -\def\tabu@verticalmeasure{\everypar{}% - \ifnum \currentgrouptype>12 % 14=semi-simple, 15=math shift group - \setbox\tabu@box =\hbox\bgroup - \let\tabu@verticalspacing \tabu@verticalsp@lcr - \d@llarbegin % after \hbox ... - \else - \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop - \else\ifnum\currentgrouptype=12\vcenter - \else\vbox\fi\fi}% - \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup - \let\tabu@verticalspacing \tabu@verticalsp@pmb - \fi -}% \tabu@verticalmeasure -\def\tabu@verticalsp@lcr{% - \d@llarend \egroup % - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \noindent\vrule height\@tempdima depth\@tempdimb -}% \tabu@verticalsp@lcr -\def\tabu@verticalsp@pmb{% inserts struts as needed - \par \expandafter\egroup - \expandafter$\expandafter - \egroup \expandafter - \@tempdimc \the\prevdepth - \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep - \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax - \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi - \ifdim \tabu@ht<\@tempdima \tabu@htdef{\the\@tempdima}\fi - \ifdim \tabu@dp<\@tempdimb \tabu@dpdef{\the\@tempdimb}\fi - \let\@finalstrut \@gobble - \hrule height\@tempdima depth\@tempdimb width\hsize -%% \box\tabu@box -}% \tabu@verticalsp@pmb - -\def\tabu@verticalinit{% - \ifnum \c@taburow=\z@ \tabu@rearstrut \fi % after \tabu@reset ! - \advance\c@taburow \@ne - \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}% - \advance\c@taburow \m@ne -}% \tabu@verticalinit -\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@ht {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname} -\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@dp {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname} -\def\tabu@verticaldynamicadjustment {% - \advance\c@taburow \@ne - \extrarowheight \dimexpr\tabu@ht - \ht\strutbox - \extrarowdepth \dimexpr\tabu@dp - \dp\strutbox - \let\arraystretch \@empty - \advance\c@taburow \m@ne -}% \tabu@verticaldynamicadjustment -\def\tabuphantomline{\crcr \noalign{% - {\globaldefs \@ne - \setbox\@arstrutbox \box\voidb@x - \let\tabu@@celllalign \tabu@celllalign - \let\tabu@@cellralign \tabu@cellralign - \let\tabu@@cellleft \tabu@cellleft - \let\tabu@@cellright \tabu@cellright - \let\tabu@@thevline \tabu@thevline - \let\tabu@celllalign \@empty - \let\tabu@cellralign \@empty - \let\tabu@cellright \@empty - \let\tabu@cellleft \@empty - \let\tabu@thevline \relax}% - \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}% - \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr - \noalign{\tabu@rearstrut - {\globaldefs\@ne - \let\tabu@celllalign \tabu@@celllalign - \let\tabu@cellralign \tabu@@cellralign - \let\tabu@cellleft \tabu@@cellleft - \let\tabu@cellright \tabu@@cellright - \let\tabu@thevline \tabu@@thevline}}}% - \expandafter}\the\toks@ -}% \tabuphantomline -%% \firsthline and \lasthline corrections --------------------------- -\def\tabu@firstline {\tabu@hlineAZ \tabu@firsthlinecorrection {}} -\def\tabu@firsthline{\tabu@hlineAZ \tabu@firsthlinecorrection \hline} -\def\tabu@lastline {\tabu@hlineAZ \tabu@lasthlinecorrection {}} -\def\tabu@lasthline {\tabu@hlineAZ \tabu@lasthlinecorrection \hline} -\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument) - \noalign{\ifnum0=`}\fi - {\CT@arc@\hrule height\arrayrulewidth}% - \futurelet \tabu@temp \tabu@xhline -}% \tabu@hline -\def\tabu@xhline{% - \ifx \tabu@temp \hline - {\ifx \CT@drsc@\relax \vskip - \else\ifx \CT@drsc@\@empty \vskip - \else \CT@drsc@\hrule height - \fi\fi - \doublerulesep}% - \fi - \ifnum0=`{\fi}% -}% \tabu@xhline -\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@ - \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}% - \tabu@hlineAZsurround -}% \tabu@hlineAZ -\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{% - \extratabsurround #1\let\tabucline \tabucline@scan - \let\hline \tabu@hlinescan \let\firsthline \hline - \let\cline \tabu@clinescan \let\lasthline \hline - \expandafter \futurelet \expandafter \tabu@temp - \expandafter \tabu@nexthlineAZ \tabu@temp -}% \tabu@hlineAZsurround -\def\tabu@hlinescan {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline} -\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}} -\def\tabucline@scan{\@testopt \tabucline@sc@n {}} -\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}} -\def\tabu@nexthlineAZ{% - \ifx \tabu@temp\hline \else - \ifx \tabu@temp\cline \else - \ifx \tabu@temp\tabucline \else - \tabu@hlinecorrection - \fi\fi\fi -}% \tabu@nexthlineAZ -\def\tabu@xhlineAZ #1{% - \toks@\expandafter{\the\toks@ #1}% - \@tempdimc \tabu@thick % The last line width - \ifcase\count@ \@tempdimb \tabu@thick % The first line width - \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax - \fi - \advance\count@ \@ne \futurelet \tabu@temp \tabu@nexthlineAZ -}% \tabu@xhlineAZ -\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1 - \@tempdima \dimexpr \ht\@arstrutbox+\dimen@ - \edef\firsthline{% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - height \the\dimexpr\@tempdima+\extratabsurround - depth \dp\@arstrutbox - width \tabustrutrule}\hss}\cr - \noalign{\vskip -\the\dimexpr \@tempdima+\@tempdimb - +\dp\@arstrutbox \relax}% - \the\toks@ - }\ifnum0=`{\fi - \expandafter}\firsthline % we are then ! -}% \tabu@firsthlinecorrection -\def\tabu@lasthlinecorrection{% - \@tempdima \dimexpr \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc - \edef\lasthline{% - \the\toks@ - \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}% - \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule - depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@ - +\extratabsurround-\@tempdimc - height \z@ - width \tabustrutrule}\hss}\cr - }\ifnum0=`{\fi - \expandafter}\lasthline % we are then ! -}% \tabu@lasthlinecorrection -\def\tabu@LT@@hline{% - \ifx\LT@next\hline - \global\let\LT@next \@gobble - \ifx \CT@drsc@\relax - \gdef\CT@LT@sep{% - \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}% - \else - \gdef\CT@LT@sep{% - \multispan\LT@cols{% - \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}% - \fi - \else - \global\let\LT@next\empty - \gdef\CT@LT@sep{% - \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}% - \fi - \ifnum0=`{\fi}% - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \CT@LT@sep - \multispan\LT@cols - {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr - \noalign{\penalty\@M}% - \LT@next -}% \tabu@LT@@hline -%% Horizontal lines : \tabucline ------------------------------------ -\let\tabu@start \@tempcnta -\let\tabu@stop \@tempcntb -\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline} -\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}% - \ifnum \tabu@stop<\z@ \toks@{}% - \else \tabu@clinearg{#1}\tabu@thestyle - \edef\tabucline{\toks@{% - \ifnum \tabu@start>\z@ \omit - \tabu@multispan\tabu@start {\span\omit}&\fi - \omit \tabu@multispan\tabu@stop {\span\omit}% - \tabu@thehline\cr - }}\tabucline - \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}% - \fi - \futurelet \tabu@temp \tabu@xcline -}% \tabu@cline -\def\tabu@clinearg #1{% - \ifx\\#1\\\let\tabu@thestyle \tabu@ls@ - \else \@defaultunits \expandafter\let\expandafter\@tempa - \romannumeral-`\0#1\relax \@nnil - \ifx \hbox\@tempa \tabu@clinebox{#1}% - \else\ifx \box\@tempa \tabu@clinebox{#1}% - \else\ifx \vbox\@tempa \tabu@clinebox{#1}% - \else\ifx \vtop\@tempa \tabu@clinebox{#1}% - \else\ifx \copy\@tempa \tabu@clinebox{#1}% - \else\ifx \leaders\@tempa \tabu@clineleads{#1}% - \else\ifx \cleaders\@tempa \tabu@clineleads{#1}% - \else\ifx \xleaders\@tempa \tabu@clineleads{#1}% - \else\tabu@getline {#1}% - \fi\fi\fi\fi\fi\fi\fi\fi - \fi -}% \tabu@clinearg -\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}} -\def\tabu@clineleads #1{% - \let\tabu@thestyle \relax \let\tabu@leaders \@undefined - \gdef\tabu@thehrule{#1}} -\def\tabu@thehline{\begingroup - \ifdefined\tabu@leaders - \noexpand\tabu@thehleaders - \else \noexpand\tabu@thehrule - \fi \endgroup -}% \tabu@thehline -\def\tabu@xcline{% - \ifx \tabu@temp\tabucline - \toks@\expandafter{\the\toks@ \noalign - {\ifx\CT@drsc@\relax \vskip - \else \CT@drsc@\hrule height - \fi - \doublerulesep}}% - \fi - \tabu@docline -}% \tabu@xcline -\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@} -\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}% - \ifnum0=`{\fi}\aftergroup\tabu@doclineafter} -\def\tabu@multispan #1#2{% - \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan - \else \expandafter\@gobbletwo - \fi {#1-1}{#2}% -}% \tabu@multispan -\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil} -\def\tabu@start@stop #1-#2\@nnil{% - \@defaultunits \tabu@start\number 0#1\relax \@nnil - \@defaultunits \tabu@stop \number 0#2\relax \@nnil - \tabu@stop \ifnum \tabu@start>\tabu@nbcols \m@ne - \else\ifnum \tabu@stop=\z@ \tabu@nbcols - \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols - \else \tabu@stop - \fi\fi\fi - \advance\tabu@start \m@ne - \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi -}% \tabu@start@stop -%% Numbers: siunitx S columns (and \tabudecimal) ------------------- -\def\tabu@tabudecimal #1{% - \def\tabu@decimal{#1}\@temptokena{}% - \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces - \tabu@scandecimal -}% \tabu@tabudecimal -\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@} -\def\tabu@skipdecimal#1{#1\tabu@scandecimal} -\def\tabu@getdecimal@ignorespaces{% - \ifcase 0\ifx\tabu@temp\ignorespaces\else - \ifx\tabu@temp\@sptoken1\else - 2\fi\fi\relax - \let\tabu@getdecimal@ \tabu@getdecimal - \expandafter\tabu@skipdecimal - \or \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal - \else \expandafter\tabu@skipdecimal - \fi -}% \tabu@getdecimal@ignorespaces -\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}% - \tabu@scandecimal} -\def\do#1{% - \def\tabu@get@decimalspace#1{% - \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}% -}\do{ } -\let\tabu@@tabudecimal \tabu@tabudecimal -\def\tabu@getdecimal{% - \ifcase 0\ifx 0\tabu@temp\else - \ifx 1\tabu@temp\else - \ifx 2\tabu@temp\else - \ifx 3\tabu@temp\else - \ifx 4\tabu@temp\else - \ifx 5\tabu@temp\else - \ifx 6\tabu@temp\else - \ifx 7\tabu@temp\else - \ifx 8\tabu@temp\else - \ifx 9\tabu@temp\else - \ifx .\tabu@temp\else - \ifx ,\tabu@temp\else - \ifx -\tabu@temp\else - \ifx +\tabu@temp\else - \ifx e\tabu@temp\else - \ifx E\tabu@temp\else - \ifx\tabu@cellleft\tabu@temp1\else - \ifx\ignorespaces\tabu@temp1\else - \ifx\@sptoken\tabu@temp2\else - 3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax - \expandafter\tabu@get@decimal - \or \expandafter\tabu@skipdecimal - \or \expandafter\tabu@get@decimalspace - \else\expandafter\tabu@printdecimal - \fi -}% \tabu@getdecimal -\def\tabu@printdecimal{% - \edef\tabu@temp{\the\@temptokena}% - \ifx\tabu@temp\@empty\else - \ifx\tabu@temp\space\else - \expandafter\tabu@decimal\expandafter{\the\@temptokena}% - \fi\fi -}% \tabu@printdecimal -%% Verbatim inside X columns ---------------------------------------- -\def\tabu@verbatim{% - \let\verb \tabu@verb - \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd -}% \tabu@verbatim -\let\tabu@ltx@verb \verb -\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb} -\def\tabu@fancyvrb {% - \def\tabu@FV@DefineCheckEnd ##1{% - \def\tabu@FV@DefineCheckEnd{% - ##1% - \let\FV@CheckEnd \tabu@FV@CheckEnd - \let\FV@@CheckEnd \tabu@FV@@CheckEnd - \let\FV@@@CheckEnd \tabu@FV@@@CheckEnd - \edef\FV@EndScanning{% - \def\noexpand\next{\noexpand\end{\FV@EnvironName}}% - \global\let\noexpand\FV@EnvironName\relax - \noexpand\next}% - \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}% - }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd} -}% \tabu@fancyvrb -\def\tabu@FV@CheckEnd #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil} -\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}} -\begingroup -\catcode`\[1 \catcode`\]2 -\@makeother\{ \@makeother\} - \edef\x[\endgroup - \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3% - ]\x \@nil{\def\@tempa{#2}\def\@tempb{#3}} -\def\tabu@FV@ListProcessLine #1{% - \hbox {%to \hsize{% - \kern\leftmargin - \hbox {%to \linewidth{% - \FV@LeftListNumber - \FV@LeftListFrame - \FancyVerbFormatLine{#1}\hss -%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on) -%% \FV@RightListFrame}% - \FV@RightListFrame - \FV@RightListNumber}% -%% DG/SR modification end - \hss}} -%% \savetabu -------------------------------------------------------- -\newcommand*\savetabu[1]{\noalign{% - \tabu@sanitizearg{#1}\tabu@temp - \ifx \tabu@temp\@empty \tabu@savewarn{}{The tabu will not be saved}\else - \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}% - \ifdefined\tabu@restored \expandafter\let - \csname tabu@saved@\tabu@temp \endcsname \tabu@restored - \else {\tabu@save}% - \fi - \fi}% -}% \savetabu -\def\tabu@save {% - \toks0\expandafter{\tabu@saved@}% - \iftabu@negcoef - \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}% - \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi - \toks1\expandafter{\tabu@savedpream}% - \toks2\expandafter{\tabu@savedpreamble}% - \let\@preamble \relax - \let\tabu@savedpream \relax \let\tabu@savedparams \relax - \edef\tabu@preamble{% - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \edef\tabu@usetabu{% - \def\@preamble {\noexpand\the\toks2}% - \tabu@target \the\tabu@target \relax - \tabucolX \the\tabucolX \relax - \tabu@nbcols \the\tabu@nbcols \relax - \def\noexpand\tabu@aligndefault{\tabu@align}% - \def\tabu@savedparams {\noexpand\the\toks0}% - \def\tabu@savedpream {\noexpand\the\toks1}}% - \let\tabu@aligndefault \relax \let\@sharp \relax - \edef\@tempa{\noexpand\tabu@s@ved - {\tabu@usetabu} - {\tabu@preamble} - {\the\toks1}}\@tempa - \tabu@message@save -}% \tabu@save -\long\def\tabu@s@ved #1#2#3{% - \def\tabu@usetabu{#1}% - \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{% - \ifodd ##1% \usetabu - \tabu@measuringfalse \tabu@spreadfalse % Just in case... - \gdef\tabu@usetabu {% - \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi - \global\let\tabu@usetabu \@undefined - \def\@halignto {to\tabu@target}% - #1% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \else % \preamble - \gdef\tabu@preamble {% - \global\let\tabu@preamble \@undefined - #2% - \ifx \tabu@align\tabu@aligndefault@text - \ifnum \tabu@nested=\z@ - \let\tabu@align \tabu@aligndefault \fi\fi}% - \fi - #3}% -}% \tabu@s@ved -\def\tabu@aligndefault@text {\tabu@aligndefault}% -\def\tabu@warn@usetabu {\PackageWarning{tabu} - {Specifying a target with \string\usetabu\space is useless - \MessageBreak The target cannot be changed!}} -\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi} -\def\tabu@savewarn#1#2{\PackageInfo{tabu} - {User-name `#1' already used for \string\savetabu - \MessageBreak #2}}% -\def\tabu@saveerr#1{\PackageError{tabu} - {User-name `#1' is unknown for \string\usetabu - \MessageBreak I cannot restore an unknown preamble!}\@ehd} -%% \rowfont --------------------------------------------------------- -\newskip \tabu@cellskip -\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi - {\ifnum0=`}\fi \tabu@row@font} -\newcommand*\tabu@row@font[2][]{% - \ifnum7=\currentgrouptype - \global\let\tabu@@cellleft \tabu@cellleft - \global\let\tabu@@cellright \tabu@cellright - \global\let\tabu@@celllalign \tabu@celllalign - \global\let\tabu@@cellralign \tabu@cellralign - \global\let\tabu@@rowfontreset\tabu@rowfontreset - \fi - \global\let\tabu@rowfontreset \tabu@rowfont@reset - \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}% - \ifcsname tabu@cell@#1\endcsname % row alignment - \csname tabu@cell@#1\endcsname \fi - \ifnum0=`{\fi}% end of group / noalign group -}% \rowfont -\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}% -\def\tabu@rowfont@reset{% - \global\let\tabu@rowfontreset \tabu@@rowfontreset - \global\let\tabu@cellleft \tabu@@cellleft - \global\let\tabu@cellright \tabu@@cellright - \global\let\tabu@cellfont \@empty - \global\let\tabu@celllalign \tabu@@celllalign - \global\let\tabu@cellralign \tabu@@cellralign -}% \tabu@@rowfontreset -\let\tabu@rowfontreset \@empty % overwritten \AtBeginDocument if colortbl -%% \tabu@prepnext@tok ----------------------------------------------- -\newif \iftabu@cellright -\def\tabu@prepnext@tok{% - \ifnum \count@<\z@ % - \@tempcnta \@M % - \tabu@nbcols\z@ - \let\tabu@fornoopORI \@fornoop - \tabu@cellrightfalse - \else - \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left - \advance \tabu@nbcols \@ne - \iftabu@cellright % before-previous token is right and is finished - \tabu@cellrightfalse % - \tabu@righttok - \fi - \tabu@lefttok - \or % (case 1) previous token is right - \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop - \else % special column: do not change the token - \iftabu@cellright % before-previous token is right - \tabu@cellrightfalse - \tabu@righttok - \fi - \fi % \ifcase - \fi - \tabu@prepnext@tokORI -}% \tabu@prepnext@tok -\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@} -\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{% - \ifx \in@#2\else - \let\@fornoop \tabu@fornoopORI - \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}% - \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}% - \expandafter\prepnext@tok - \fi -}% \tabu@lastnoop -\def\tabu@righttok{% - \advance \count@ \m@ne - \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}% - \advance \count@ \@ne -}% \tabu@righttok -\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign - \the\toks\count@ \tabu@cellleft}% after because of $ -}% \tabu@lefttok -%% Neutralisation of glues ------------------------------------------ -\let\tabu@cellleft \@empty -\let\tabu@cellright \@empty -\tabu@celllalign@def{\tabu@cellleft}% -\let\tabu@cellralign \@empty -\def\tabu@cell@align #1#2#3{% - \let\tabu@maybesiunitx \toks@ \tabu@celllalign - \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}% - \toks@\expandafter{\tabu@cellralign #2}% - \xdef\tabu@cellralign{\the\toks@}% - \toks@\expandafter{\tabu@cellleft #3}% - \xdef\tabu@cellleft{\the\toks@}% -}% \tabu@cell@align -\def\tabu@cell@l{% force alignment to left - \tabu@cell@align - {\tabu@removehfil \raggedright \tabu@cellleft}% left - {\tabu@flush1\tabu@ignorehfil}% right - \raggedright -}% \tabu@cell@l -\def\tabu@cell@c{% force alignment to center - \tabu@cell@align - {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \centering -}% \tabu@cell@c -\def\tabu@cell@r{% force alignment to right - \tabu@cell@align - {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft} - \tabu@ignorehfil - \raggedleft -}% \tabu@cell@r -\def\tabu@cell@j{% force justification (for p, m, b columns) - \tabu@cell@align - {\tabu@justify\tabu@cellleft} - {} - \tabu@justify -}% \tabu@cell@j -\def\tabu@justify{% - \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip - \parfillskip\@flushglue -}% \tabu@justify -%% ragged2e settings -\def\tabu@cell@L{% force alignment to left (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedRight \tabu@cellleft} - {\tabu@flush 1\tabu@ignorehfil} - \RaggedRight -}% \tabu@cell@L -\def\tabu@cell@C{% force alignment to center (ragged2e) - \tabu@cell@align - {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft} - {\tabu@flush{.5}\tabu@ignorehfil} - \Centering -}% \tabu@cell@C -\def\tabu@cell@R{% force alignment to right (ragged2e) - \tabu@cell@align - {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft} - \tabu@ignorehfil - \RaggedLeft -}% \tabu@cell@R -\def\tabu@cell@J{% force justification (ragged2e) - \tabu@cell@align - {\justifying \tabu@cellleft} - {} - \justifying -}% \tabu@cell@J -\def\tabu@flush#1{% - \iftabu@colortbl % colortbl uses \hfill rather than \hfil - \hskip \ifnum13<\currentgrouptype \stretch{#1}% - \else \ifdim#1pt<\p@ \tabu@cellskip - \else \stretch{#1} - \fi\fi \relax - \else % array.sty - \ifnum 13<\currentgrouptype - \hfil \hskip1sp \relax \fi - \fi -}% \tabu@flush -\let\tabu@hfil \hfil -\let\tabu@hfill \hfill -\let\tabu@hskip \hskip -\def\tabu@removehfil{% - \iftabu@colortbl - \unkern \tabu@cellskip =\lastskip - \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip - \else \tabu@cellskip \z@skip - \fi - \else - \ifdim\lastskip=1sp\unskip\fi - \ifnum\gluestretchorder\lastskip =\@ne - \hfilneg % \hfilneg for array.sty but not for colortbl... - \fi - \fi -}% \tabu@removehfil -\def\tabu@ignorehfil{\aftergroup \tabu@nohfil} -\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil - \def\hfil{\let\hfil \tabu@hfil}% local to (alignment template) group -}% \tabu@nohfil -\def\tabu@colortblalignments {% if colortbl - \def\tabu@nohfil{% - \def\hfil {\let\hfil \tabu@hfil}% local to (alignment template) group - \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff... - \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local -}% \tabu@colortblalignments -%% Taking care of footnotes and hyperfootnotes ---------------------- -\long\def\tabu@footnotetext #1{% - \edef\@tempa{\the\tabu@footnotes - \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}% - \global\tabu@footnotes\expandafter{\@tempa {#1}}}% -\long\def\tabu@xfootnotetext [#1]#2{% - \global\tabu@footnotes\expandafter{\the\tabu@footnotes - \footnotetext [{#1}]{#2}}} -\let\tabu@xfootnote \@xfootnote -\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }} -\long\def\tabu@Hy@xfootnote [#1]{% - \begingroup - \value\@mpfn #1\relax - \protected@xdef \@thefnmark {\thempfn}% - \endgroup - \@footnotemark \tabu@Hy@ftntxt {#1}% -}% \tabu@Hy@xfootnote -\long\def\tabu@Hy@ftntxt #1#2{% - \edef\@tempa{% - \the\tabu@footnotes - \begingroup - \value\@mpfn #1\relax - \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}% - \expandafter \noexpand \expandafter - \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}% - }% - \global\tabu@footnotes\expandafter{\@tempa {#2}% - \endgroup}% -}% \tabu@Hy@ftntxt -\long\def\tabu@Hy@footnotetext #1#2{% - \H@@footnotetext{% - \ifHy@nesting - \hyper@@anchor {#1}{#2}% - \else - \Hy@raisedlink{% - \hyper@@anchor {#1}{\relax}% - }% - \def\@currentHref {#1}% - \let\@currentlabelname \@empty - #2% - \fi - }% -}% \tabu@Hy@footnotetext -%% No need for \arraybackslash ! ------------------------------------ -\def\tabu@latextwoe {% -\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@centering \centering \arraybackslash -\tabu@temp \tabu@raggedleft \raggedleft \arraybackslash -\tabu@temp \tabu@raggedright \raggedright \arraybackslash -}% \tabu@latextwoe -\def\tabu@raggedtwoe {% -\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}} -\tabu@temp \tabu@Centering \Centering \arraybackslash -\tabu@temp \tabu@RaggedLeft \RaggedLeft \arraybackslash -\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash -\tabu@temp \tabu@justifying \justifying \arraybackslash -}% \tabu@raggedtwoe -\def\tabu@normalcrbackslash{\let\\\@normalcr} -\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{% - \expandafter\tabu@normalcrbackslash \@trivlist}} -%% Utilities: \fbox \fcolorbox and \tabudecimal ------------------- -\def\tabu@fbox {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox} -\def\tabu@beginfbox {\bgroup \kern\fboxsep - \bgroup\aftergroup\tabu@endfbox} -\def\tabu@endfbox {\kern\fboxsep\egroup\egroup - \@frameb@x\relax} -\def\tabu@color@b@x #1#2{\leavevmode \bgroup - \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}% - \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox -}% \tabu@color@b@x -\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup - \aftergroup\tabu@endcolor@b@x \set@color} -\def\tabu@endcolor@b@x {\kern\fboxsep \egroup - \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@ - \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@ - \tabu@docolor@b@x \egroup -}% \tabu@endcolor@b@x -%% Corrections (arydshln, delarray, colortbl) ----------------------- -\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray - \iftabu@colortbl - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \def\tabu@endarray{% - \crcr \egroup \egroup % - \@arrayright % - \gdef\@preamble{}\CT@end}% - \fi - \else - \ifdefined\adl@array % - \def\tabu@endarray{% - \adl@endarray \egroup \adl@arrayrestore \egroup % - \@arrayright % - \gdef\@preamble{}}% - \else % - \PackageWarning{tabu} - {\string\@arrayright\space is missing from the - \MessageBreak definition of \string\endarray. - \MessageBreak Compatibility with delarray.sty is broken.}% - \fi\fi -}% \tabu@fix@arrayright -\def\tabu@adl@xarraydashrule #1#2#3{% - \ifnum\@lastchclass=\adl@class@start\else - \ifnum\@lastchclass=\@ne\else - \ifnum\@lastchclass=5 \else % @-arg (class 5) and !-arg (class 1) - \adl@leftrulefalse \fi\fi % must be treated the same - \fi - \ifadl@zwvrule\else \ifadl@inactive\else - \@addtopreamble{\vrule\@width\arrayrulewidth - \@height\z@ \@depth\z@}\fi \fi - \ifadl@leftrule - \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}% - {\number#1}#3}% - \else \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}% - {\number#2}#3} - \fi -}% \tabu@adl@xarraydashrule -\def\tabu@adl@act@endpbox {% - \unskip \ifhmode \nobreak \fi \@finalstrut \@arstrutbox - \egroup \egroup - \adl@colhtdp \box\adl@box \hfil -}% \tabu@adl@act@endpbox -\def\tabu@adl@fix {% - \let\adl@xarraydashrule \tabu@adl@xarraydashrule % arydshln - \let\adl@act@endpbox \tabu@adl@act@endpbox % arydshln - \let\adl@act@@endpbox \tabu@adl@act@endpbox % arydshln - \let\@preamerror \@preamerr % arydshln -}% \tabu@adl@fix -%% Correction for longtable' \@startbox definition ------------------ -%% => \everypar is ``missing'' : TeX should be in vertical mode -\def\tabu@LT@startpbox #1{% - \bgroup - \let\@footnotetext\LT@p@ftntext - \setlength\hsize{#1}% - \@arrayparboxrestore - \everypar{% - \vrule \@height \ht\@arstrutbox \@width \z@ - \everypar{}}% -}% \tabu@LT@startpbox -%% \tracingtabu and the package options ------------------ -\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}} -\DeclareOption{linegoal}{% - \AtEndOfPackage{% - \RequirePackage{linegoal}[2010/12/07]% - \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX -}} -\DeclareOption{scantokens}{\tabuscantokenstrue} -\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}} -\def\tracingtabu {\begingroup\@ifnextchar=% - {\afterassignment\tabu@tracing\count@} - {\afterassignment\tabu@tracing\count@1\relax}} -\def\tabu@tracing{\expandafter\endgroup - \expandafter\tabu@tr@cing \the\count@ \relax -}% \tabu@tracing -\def\tabu@tr@cing #1\relax {% - \ifnum#1>\thr@@ \let\tabu@tracinglines\message - \else \let\tabu@tracinglines\@gobble - \fi - \ifnum#1>\tw@ \let\tabu@DBG \tabu@@DBG - \def\tabu@mkarstrut {\tabu@DBG@arstrut}% - \tabustrutrule 1.5\p@ - \else \let\tabu@DBG \@gobble - \def\tabu@mkarstrut {\tabu@arstrut}% - \tabustrutrule \z@ - \fi - \ifnum#1>\@ne \let\tabu@debug \message - \else \let\tabu@debug \@gobble - \fi - \ifnum#1>\z@ - \let\tabu@message \message - \let\tabu@tracing@save \tabu@message@save - \let\tabu@starttimer \tabu@pdftimer - \else - \let\tabu@message \@gobble - \let\tabu@tracing@save \@gobble - \let\tabu@starttimer \relax - \fi -}% \tabu@tr@cing -%% Setup \AtBeginDocument -\AtBeginDocument{\tabu@AtBeginDocument} -\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined - \ifdefined\arrayrulecolor \tabu@colortbltrue % - \tabu@colortblalignments % different glues are used - \else \tabu@colortblfalse \fi - \ifdefined\CT@arc@ \else \let\CT@arc@ \relax \fi - \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi - \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@ - \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname % - \expandafter\ifx - \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax - \tabu@siunitxtrue - \else \let\tabu@maybesiunitx \@firstofone % - \let\tabu@siunitx \tabu@nosiunitx - \tabu@siunitxfalse - \fi - \ifdefined\adl@array % - \else \let\tabu@adl@fix \relax - \let\tabu@adl@endtrial \@empty \fi - \ifdefined\longtable % - \else \let\longtabu \tabu@nolongtabu \fi - \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi - \csname\ifcsname ifHy@hyperfootnotes\endcsname % - ifHy@hyperfootnotes\else iffalse\fi\endcsname - \let\tabu@footnotetext \tabu@Hy@ftntext - \let\tabu@xfootnote \tabu@Hy@xfootnote \fi - \ifdefined\FV@DefineCheckEnd% - \tabu@fancyvrb \fi - \ifdefined\color % - \let\tabu@color \color - \def\tabu@leavevmodecolor ##1{% - \def\tabu@leavevmodecolor {\leavevmode ##1}% - }\expandafter\tabu@leavevmodecolor\expandafter{\color}% - \else - \let\tabu@color \tabu@nocolor - \let\tabu@leavevmodecolor \@firstofone \fi - \tabu@latextwoe - \ifdefined\@raggedtwoe@everyselectfont % - \tabu@raggedtwoe - \else - \let\tabu@cell@L \tabu@cell@l - \let\tabu@cell@R \tabu@cell@r - \let\tabu@cell@C \tabu@cell@c - \let\tabu@cell@J \tabu@cell@j \fi - \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}% - \ifin@ \let\tabu@endarray \endarray - \else \tabu@fix@arrayright \fi% - \everyrow{}% -}% \tabu@AtBeginDocument -\def\tabu@warn@cellspace{% - \PackageWarning{tabu}{% - Package cellspace has some limitations - \MessageBreak And redefines some macros of array.sty. - \MessageBreak Please use \string\tabulinesep\space to control - \MessageBreak vertical spacing of lines inside tabu environment}% -}% \tabu@warn@cellspace -%% tabu Package initialisation -\tabuscantokensfalse -\let\tabu@arc@G \relax -\let\tabu@drsc@G \relax -\let\tabu@evr@G \@empty -\let\tabu@rc@G \@empty -\def\tabu@ls@G {\tabu@linestyle@}% -\let\tabu@@rowfontreset \@empty % -\let\tabu@@celllalign \@empty -\let\tabu@@cellralign \@empty -\let\tabu@@cellleft \@empty -\let\tabu@@cellright \@empty -\def\tabu@naturalXmin {\z@} -\def\tabu@naturalXmax {\z@} -\let\tabu@rowfontreset \@empty -\def\tabulineon {4pt}\let\tabulineoff \tabulineon -\tabu@everyrowtrue -\ifdefined\pdfelapsedtime % - \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}% -\else \let\tabu@pdftimer \relax \let\tabu@message@etime \relax -\fi -\tracingtabu=\z@ -\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@ -\tabulinestyle{} -\taburowcolors{} -\let\tabudefaulttarget \linewidth -\ProcessOptions* % \ProcessOptions* is quicker ! -\endinput -%% -%% End of file `tabu.sty'. diff --git a/lib/libesp32_epdiy/doc/make.bat b/lib/libesp32_epdiy/doc/make.bat deleted file mode 100755 index 6247f7e23..000000000 --- a/lib/libesp32_epdiy/doc/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/lib/libesp32_epdiy/doc/requirements.txt b/lib/libesp32_epdiy/doc/requirements.txt deleted file mode 100755 index fb2bfe701..000000000 --- a/lib/libesp32_epdiy/doc/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -breathe>=4 -Sphinx>=3 diff --git a/lib/libesp32_epdiy/doc/source/about.rst b/lib/libesp32_epdiy/doc/source/about.rst deleted file mode 100755 index 3f57237a2..000000000 --- a/lib/libesp32_epdiy/doc/source/about.rst +++ /dev/null @@ -1,44 +0,0 @@ -About -===== - -EPDiy is a driver board for e-Paper (or E-ink) displays. - -.. _display_types: - -Display Types -------------- - -The EPDiy driver board targets multiple E-Paper displays. -As the driving method for all matrix-based E-ink displays seems to be more or less the same, only the right connector and timings are needed. The EPDiy PCB features a 33pin, 34pin and a 39pin connector, which allow to drive a number of displays. -A table of supported displays is mainained in the :code:`README.md` file. - -Some of the supported displays are showcased below. - -ED097OC4 -~~~~~~~~ - -The ED097OC4 was the original target of this project. It is an 9.7 inch screen, with a resolution of 1200 * 825 pixels (150dpi). -It is fairly available on Ebay and AliExpress, for around 30$ to 35$. -There is also a lower contrast version (ED097OC1) which also works. - -.. image:: img/ed097oc4.jpg - -ED060SC4 -~~~~~~~~ - -This is a 6 inch display, with a 800 * 600 resolution. With 150dpi as well, it has about half the total display area of the ED097OC4. -To connect this display, the 39-pin connector on the back has to be populated. -It is also the display a lot of experimentation was done with (see Thanks To), so there are alternative controllers available. -Besides the obvious difference in size, this display is cheaper (~20$) and also refreshes slightly faster than the ED097OC4. - -.. image:: img/ed060sc4.jpg - -ED097TC2 -~~~~~~~~ - -Information on this display should be taken with a grain of salt. One of the displays I ordered as ED097OC4 came as ED097TC2, -and upon testing it also exhibited noticably better contrast and a more responsive electro-phoretic medium. -The ribbon connector looked like a ED097TC2 as well, or like the `9.7 inch screens offered by Waveshare ` (which is sold for a lot more). -If you are on the lookout for such a display keep in mind the authenticity of my sample is disputable and resolution and connector type should be double-checked. - -.. image:: img/ed097tc2.jpg diff --git a/lib/libesp32_epdiy/doc/source/api.rst b/lib/libesp32_epdiy/doc/source/api.rst deleted file mode 100755 index e45c3945a..000000000 --- a/lib/libesp32_epdiy/doc/source/api.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _pub_api: - -Library API -=========== - -Highlevel API -------------- -.. doxygenfile:: epd_highlevel.h - -Complete API ------------- -.. doxygenfile:: epd_driver.h - -Internals ----------- -.. doxygenfile:: epd_internals.h diff --git a/lib/libesp32_epdiy/doc/source/conf.py b/lib/libesp32_epdiy/doc/source/conf.py deleted file mode 100755 index d95d14ab8..000000000 --- a/lib/libesp32_epdiy/doc/source/conf.py +++ /dev/null @@ -1,71 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) -import subprocess, os - -# -- Project information ----------------------------------------------------- - -project = 'EPDiy' -copyright = '2020, Valentin Roland' -author = 'Valentin Roland' - -# The full version, including alpha/beta/rc tags -release = '1.0' - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'breathe' -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_rtd_theme' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -breathe_projects = { "epdiy": "./xml/" } - -breathe_default_project = "epdiy" - -breathe_domain_by_extension = { - "h" : "c", - "c" : "c", -} - -read_the_docs_build = os.environ.get('READTHEDOCS', None) == 'True' - -if read_the_docs_build: - - subprocess.call('cd ../; doxygen', shell=True) diff --git a/lib/libesp32_epdiy/doc/source/filegen.rst b/lib/libesp32_epdiy/doc/source/filegen.rst deleted file mode 100755 index 707475c08..000000000 --- a/lib/libesp32_epdiy/doc/source/filegen.rst +++ /dev/null @@ -1,89 +0,0 @@ -Fonts, Images, Waveforms -======================== - -The ESP32 is, although fairly capable, still a microcontroller. -Thus, with memory and computational resources limited, it is useful to do as much of the processing -for displaying fonts and images on a computer. - -Epdiy comes with scripts that convert fonts, images and waveforms to C headers, -that you can then simply `#include` in your project. - -Generating Font Files ---------------------- - -Fonts can only be used by the driver in a special header format -(inspired by the Adafruit GFX library), which need to be generated from TTF fonts. -For this purpose, the :code:`scripts/fontconvert.py` utility is provided. -:: - - fontconvert.py [-h] [--compress] [--additional-intervals ADDITIONAL_INTERVALS] name size fontstack [fontstack ...] - -The following example generates a header file for Fira Code at size 10, where glyphs that are not found in Fira Code will be taken from Symbola: -:: - - ./fontconvert.py FiraCode 10 /usr/share/fonts/TTF/FiraCode-Regular.ttf /usr/share/fonts/TTF/Symbola.ttf > ../examples/terminal/main/firacode.h - -You can change which unicode character codes are to be exported by specifying additional -ranges of unicode code points with :code:`--additional-intervals`. -Intervals are written as :code:`min,max`. -To add multiple intervals, you can specify the :code:`--additional-intervals` option multiple times. -:: - - ./fontconvert.py ... --additional-intervals 0xE0A0,0xE0A2 --additional-intervals 0xE0B0,0xE0B3 ... - -The above command would add two addtitional ranges. - -You can enable compression with :code:`--compress`, which reduces the size of the generated font but comes at a performance cost. - -If the generated font files with the default characters are too large for your application, -you can modify :code:`intervals` in :code:`fontconvert.py`. - -Generating Images ------------------ - -The process for converting images is very similar to converting fonts. -Run the :code:`scripts/imgconvert.py` script with an input image, an image name and an output image. -:: - - imgconvert.py [-h] -i INPUTFILE -n NAME -o OUTPUTFILE [-maxw MAX_WIDTH] [-maxh MAX_HEIGHT] - -The image is converted to grayscale scaled down to match fit into :code:`MAX_WIDTH` and :code:`MAX_HEIGHT` (1200x825 by default). -For accurate grayscale it is advisable to color-grade and scale the image with a dedicated tool before converting it. - -:code:`OUTPUTFILE` will be a C header with the following constants defined: - -- :code:`{NAME}_width` is the width of the image -- :code:`{NAME}_height` is the height of the image -- :code:`{NAME}_data` is the image data in 4 bit-per-pixel grayscale format. - -Converting Waveforms --------------------- - -In comercial applications, displays are driven with information in so-called `Waveform Files`. -These specify how which pulses to apply to the pixel to transition from one gray tone to another. -Unfortunately, they are display-specific and proprietary. -However, while they are not freely available, they can be obtained through a number of ways: - -- Being a large customer of E-Ink. Unfortunately not doable for mere mortals. -- Finding them scattered around the internet. Examples include the `MobileRead forums `_ or the `NXP Support forum `_. -- Extracting from e-Reader firmware. -- Extracting from a flash chip that comes with some displays. More on this can be found `here `_. - -Waveforms usually come with a :code:`*.wbf` file extension. - - -If you have a matching waveform file for your display, it can be converted to a waveform header that's usable by epdiy. -The advantage of using vendor waveforms include the availability of all implemented modes in the waveform file, support of a wide range of temperatures and more accurate grayscale-to-grayscale transitions. - -As a first step, the waveform data is extracted from the original waveform file and stored in JSON format. -This can be done using a `modified version `_ of `inkwave `_ by Marc Juul. - -Once a matching JSON file is obtained, the :code:`scripts/waveform_hdrgen.py` utility can be used to generate a waveform header, which can be included in your project. -:: - - waveform_hdrgen.py [-h] [--list-modes] [--temperature-range TEMPERATURE_RANGE] [--export-modes EXPORT_MODES] name - -With the :code:`--list-modes` option, a list of all included modes is printed. -:code:`name` specifies a name for the generated :code:`EpdWaveform` object. -Additionally, the temperature range and modes to export can be limited in order to reduce file size. -An example for the usage of this script can be found in the top-level :code:`Makefile` of the epdiy repository. diff --git a/lib/libesp32_epdiy/doc/source/getting_started.rst b/lib/libesp32_epdiy/doc/source/getting_started.rst deleted file mode 100755 index 859e9833f..000000000 --- a/lib/libesp32_epdiy/doc/source/getting_started.rst +++ /dev/null @@ -1,155 +0,0 @@ -.. _getting_started: - -Getting Started -=============== - - -Getting your Board ------------------- - -At the current point in time, there is no official way to buy an epdiy board. -Fortunately, it is quite easy to order your own. There are many PCB prototype services -that will manufacture boards for a low price. - -To use one of those services, upload the "Gerber files", usually provided as a zip file, -to the service. -Please consult the README of the epdiy repository for a link to the gerber files for the current revision. -Some services also offer automated assembly for all or a subset of components. -Usually, you will have to upload a bill of materials (BOM) and a placement file. -Both are provided in the `hardware/epaper-breakout` directory. - -Choosing and Finding Parts -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The parts needed to assemble the epdiy board are listed in the `BOM.csv` file. -Commodity parts like resistors, capacitors, coils and diodes are interchangable, as long as they -fit the footprint. -When in doubt, use the parts listed in the BOM file. - -However, some parts are not as common, especially the connectors. -Most of them can be found on sites like eBay or AliExpress. - -Tips: - - Use the WROVER-B module instead of other WROVER variants. - This module exhibits a low deep sleep current and is proven to work. - - The LT1945 voltage booster seems to be out of stock with some distributors, - but they are available cheaply from AliExpress. - -Calibrate VCOM --------------- - -EPaper displays use electrical fields to drive colored particles. -One of the required voltages, VCOM (Common Voltage) is display-dependent -and must be calibrated for each display individually. - -Fortunately, the VCOM voltage is usually printed on the display, similar to this: - -.. image:: img/vcom.jpg - -The VCOM value is usually between -1V and -3V. - -To tune the controller output voltage, use the trimmer marked :code:`RV1`. -You can measure the VCOM on the VCOM test pad (if your board has one) or directly -at the amplifier: - -.. image:: img/vcom_tp.jpg -.. image:: img/vcom_opamp.jpg - -.. note:: - - Although most boards do not have it yet, image quality for partial updates can be improved by adding a (at least) 4.7uF capacitor between VCOM and GND. - When adding this capacitor, take care with the polarity as VCOM is negative! - -Flashing the demo ------------------ - -First, connect you board with the computer. In the output of :code:`lsusb` you should find something like: -:: - - Bus 001 Device 048: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter - -This means the serial adapter is working and there a serial like :code:`/dev/ttyUSB0` should appear. - -Next, make sure you have the `Espressif IoT Development Framework `_ installed. -The current stable (and tested) version is 4.0. -For instructions on how to get started with the IDF, please refer to their `documentation `_. - -Then, clone the :code:`epdiy` git repository (and its submodules): -:: - - git clone --recursive https://github.com/vroland/epdiy - -Now, (after activating the IDF environment) you should be able to build the demo: -:: - - cd examples/demo/ - idf.py build - -Hold down the :code:`BOOT` button on your board, while quickly pressing the :code:`RESET` button. -The ESP module is now in boot mode. -Upload the demo program to the board with -:: - - idf.py build && idf.py flash -b 921600 && idf.py monitor - -Pressing :code:`RESET` a second time should start the demo program, which will -output some information on the serial monitor. - -With the **board power turned off**, connect your display. -Power on the board. -You should now see the demo output on your display. - -Use with esp-idf ----------------- - -The neccessary functionality for driving an EPD display is encapsulated in the :code:`components/epd_driver` IDF component. -To use it in you own project, simply copy the :code:`epd_driver` folder to your project-local :code:`components` directory. -The component sould be automatically detected by the framework, you can now use -:: - - #include "epd_driver.h" - -to use the EPD driver's :ref:`pub_api`. - -Selecting a Display Type -~~~~~~~~~~~~~~~~~~~~~~~~ - -To select the display type you want to use for the project (see :ref:`display_types`), run -:: - - idf.py menuconfig - -And navigate to :code:`Component config -> E-Paper driver -> Display Type`, select the appropriate option and save the configuration. You can use the defines -:: - - EPD_WIDTH - EPD_HEIGHT - CONFIG_EPD_DISPLAY_TYPE_ED097OC4 - CONFIG_EPD_DISPLAY_TYPE_ED060SC4 - CONFIG_EPD_DISPLAY_TYPE_... - -to make your code portable. - -Use with Arduino ----------------- - -Epdiy can be used as an Arduino library. Additionally, epdiy comes with board definitions for its supported boards, which must be installed separately. -To install epdiy to work with the Arduino IDE (>= 1.8), follow the steps below: - -1. Download / Clone the epdiy repository into your arduino libraries folder. -2. Install the `arduino-esp32 core `_. -3. Due to a limitation in the arduino-esp32 core, the epdiy board definitions must be installed manually. To do that, copy the :code:`boards.local.txt` file that comes with epdiy to the directory you installed the esp32 core in. - - * On Linux, this will be somewhere in :code:`~/Arduino/hardware/esp32/esp32`. - * On Windows, this will look something like :code:`C:/Users//Documents/Arduino/hardware/espressif/esp32` or a similar path in AppData. - - You can also search the Arduino logs to find the arduino-esp32 install directory. - - If you have the correct directory, there should be a :code:`boards.txt` file in it. Copy the :code:`boards.local.txt` in this directory. -4. Re-start the Arduino IDE. The Epdiy boards should now show up among the other ESP32 boards. -5. Select your epdiy-compatible board. You can now select your display from the board menu. -6. Try out an example sketch! Some of them are not very Arduino-Style yet, but they should help getting you started. - -Alternatively, it is possible to use the `Arduino APIs as an IDF component `_, -which allows you to use the Arduino ecosystem (Except for a different build process). - diff --git a/lib/libesp32_epdiy/doc/source/img/board_p1.jpg b/lib/libesp32_epdiy/doc/source/img/board_p1.jpg deleted file mode 100755 index e9a72a1bf..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/board_p1.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/board_p2.jpg b/lib/libesp32_epdiy/doc/source/img/board_p2.jpg deleted file mode 100755 index 5e3841342..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/board_p2.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/demo.jpg b/lib/libesp32_epdiy/doc/source/img/demo.jpg deleted file mode 100755 index 166873218..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/demo.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/ed060sc4.jpg b/lib/libesp32_epdiy/doc/source/img/ed060sc4.jpg deleted file mode 100755 index f0f8e1ccb..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/ed060sc4.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/ed097oc4.jpg b/lib/libesp32_epdiy/doc/source/img/ed097oc4.jpg deleted file mode 100755 index 917974741..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/ed097oc4.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/ed097tc2.jpg b/lib/libesp32_epdiy/doc/source/img/ed097tc2.jpg deleted file mode 100755 index 993e69cfc..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/ed097tc2.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/vcom.jpg b/lib/libesp32_epdiy/doc/source/img/vcom.jpg deleted file mode 100755 index d205e073b..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/vcom.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/vcom_opamp.jpg b/lib/libesp32_epdiy/doc/source/img/vcom_opamp.jpg deleted file mode 100755 index 5a6a3661d..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/vcom_opamp.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/img/vcom_tp.jpg b/lib/libesp32_epdiy/doc/source/img/vcom_tp.jpg deleted file mode 100755 index 27303c09e..000000000 Binary files a/lib/libesp32_epdiy/doc/source/img/vcom_tp.jpg and /dev/null differ diff --git a/lib/libesp32_epdiy/doc/source/index.rst b/lib/libesp32_epdiy/doc/source/index.rst deleted file mode 100755 index 044596b77..000000000 --- a/lib/libesp32_epdiy/doc/source/index.rst +++ /dev/null @@ -1,35 +0,0 @@ -.. EPDiy documentation master file, created by - sphinx-quickstart on Sat Apr 18 23:41:08 2020. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -The EPDiy Driver Board -====================== - -.. toctree:: - :maxdepth: 2 - :caption: Quickstart: - - about.rst - getting_started.rst - filegen.rst - tips.rst - api.rst - -EPDiy is a driver board which talks to affordable E-Paper (or E-Ink) screens, which are usually sold as replacement screens for E-Book readers. Why are they interesting? - -* Easy on the eyes and paper-like aesthetics -* No power consumption when not updating -* Sunlight-readable - -Ready-made DIY modules for this size and with 4bpp (16 Grayscale) color support are currently quite expensive. This project uses Kindle replacement screens, which are available for 20$ (small) / 30$ (large) on ebay! - -The EPDiy driver board targets multiple E-Paper displays. As the driving method for all matrix-based E-ink displays seems to be more or less the same, only the right connector and timings are needed. The EPDiy PCB features a 33pin and a 39pin connector, which allow to drive the following display types: ED097OC4, ED060SC4, ED097TC2 - -:ref:`getting_started` - -.. image:: img/demo.jpg - -.. image:: img/board_p1.jpg - -.. image:: img/board_p2.jpg diff --git a/lib/libesp32_epdiy/doc/source/tips.rst b/lib/libesp32_epdiy/doc/source/tips.rst deleted file mode 100755 index 98c049d47..000000000 --- a/lib/libesp32_epdiy/doc/source/tips.rst +++ /dev/null @@ -1,42 +0,0 @@ - -Tips & Tricks -============= - - -Temperature Dependence ----------------------- - -The display refresh speed depends on the environmental temperature. -Thus, if your room temperature is significantly different from ~22°C, grayscale -accuracy might be affected when using the builtin waveform. -This can be mitigated by using a different timing curve, but this would require calibrating the display timings at that temperature. -If you did this for some temperature other than room temperature, please submit a pull request! - -Deep Sleep Current ------------------- - -Board Revision V5 is optimized for running from a battery thanks to its low deep sleep current consumption. -In order to achieve the lowest possible deep sleep current, call -:: - - epd_deinit() - -before going to deep sleep. This will de-initialize the I2S peripheral used to drive the diplay and bring the pins used by epdiy to a low-power state. -You should be able to achieve a deep-sleep current of less than 13µA. -If your deep-sleep current is much higher, please check your attached peripherals. -With some modules, you have to isolate GPIO 12 before going to deep sleep: -:: - - rtc_gpio_isolate(GPIO_NUM_12) - -Adding a New Display --------------------- - -This section is work-in-progress. - -- Add Menuconfig options -- Include waveform in :code:`bulitin_waveforms.c` -- Add external waveform declaration and display resolution in `epd_internal.h` -- Calibrate timing curve in :code:`scripts/generate_epdiy_waveforms.py`. -- Add to the list of displays to build waveforms for in :code:`Makefile` -- Document