""" Extract a private key from rpkid's database. This is a debugging tool. rpkid goes to some trouble not to expose private keys, which is correct for normal operation, but for debugging it is occasionally useful to be able to extract the private key from MySQL. This script is just a convenience, it doesn't enable anything that couldn't be done via the mysql command line tool. While we're at this we also extract the corresponding certificate. Usage: python extract-key.py [ { -s | --self } self_handle ] [ { -b | --bsc } bsc_handle ] [ { -u | --user } mysql_user_id ] [ { -d | --db } mysql_database ] [ { -p | --password } mysql_password ] [ { -h | --help } ] Default for both user and db is "rpki". $Id$ Copyright (C) 2008 American Registry for Internet Numbers ("ARIN") Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. """ import os, time, getopt, sys, MySQLdb import rpki.x509 os.environ["TZ"] = "UTC" time.tzset() def usage(code): print __doc__ sys.exit(code) self_handle = None bsc_handle = None user = "rpki" passwd = "fnord" db = "rpki" opts, argv = getopt.getopt(sys.argv[1:], "s:b:u:p:d:h?", ["self=", "bsc=", "user=", "password=", "db=", "help"]) for o, a in opts: if o in ("-h", "--help", "-?"): usage(0) elif o in ("-s", "--self"): self_handle = a elif o in ("-b", "--bsc"): bsc_handle = a elif o in ("-u", "--user"): user = a elif o in ("-p", "--password"): passwd = a elif o in ("-d", "--db"): db = a if argv: usage(1) cur = MySQLdb.connect(user = user, db = db, passwd = passwd).cursor() cur.execute( """ SELECT bsc.private_key_id, bsc.signing_cert FROM bsc, self WHERE self.self_handle = %s AND self.self_id = bsc.self_id AND bsc_handle = %s """, (self_handle, bsc_handle)) key, cer = cur.fetchone() print rpki.x509.RSA(DER = key).get_PEM() if cer: print rpki.x509.X509(DER = cer).get_PEM() value='4'>4
diff --git a/rpkid.with_tls/Doxyfile b/rpkid.with_tls/Doxyfile new file mode 100644 index 00000000..0e42c37f --- /dev/null +++ b/rpkid.with_tls/Doxyfile @@ -0,0 +1,1566 @@ +# Doxyfile 1.6.3 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "RPKI Engine" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = YES + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = YES + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command <command> <input-file>, where <command> is the value of +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = "perl -e '@a = split(q( ), qx(svn stat -v $ARGV[0])); shift @a until $a[0] =~ /^[0-9]+$/ or @a == 0; shift @a; print shift(@a), qq(\n)'" + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = rpki \ + rpkid.py \ + pubd.py \ + irdbd.py \ + rootd.py \ + irbe_cli.py + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.py + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = . examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = doc + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = YES + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = letter + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = YES + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = YES + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = YES + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = NO + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = NO + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = YES + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = YES + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = doc + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = NO + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = NO diff --git a/rpkid.with_tls/Makefile b/rpkid.with_tls/Makefile new file mode 100644 index 00000000..541ed433 --- /dev/null +++ b/rpkid.with_tls/Makefile @@ -0,0 +1,109 @@ +# $Id$ + +all: rpki/relaxng.py myrpki.rng + +rpki/relaxng.py: ../scripts/make-relaxng.py left-right-schema.rng up-down-schema.rng publication-schema.rng + python ../scripts/make-relaxng.py >$@.tmp + mv $@.tmp $@ + +left-right-schema.rng: left-right-schema.rnc + trang left-right-schema.rnc left-right-schema.rng + +up-down-schema.rng: up-down-schema.rnc + trang up-down-schema.rnc up-down-schema.rng + +publication-schema.rng: publication-schema.rnc + trang publication-schema.rnc publication-schema.rng + +myrpki.rng: myrpki.rnc + trang myrpki.rnc myrpki.rng + +clean: + find . -type f -name '*.pyc' -delete + cd tests; $(MAKE) $@ + +install: + @true + +dont-run-trang: + touch *.rng + +relaxng: left-right-schema.rng up-down-schema.rng publication-schema.rng + cd tests; $(MAKE) protocol-samples + xmllint --noout --relaxng left-right-schema.rng tests/left-right-protocol-samples/*.xml + xmllint --noout --relaxng up-down-schema.rng tests/up-down-protocol-samples/*.xml + xmllint --noout --relaxng publication-schema.rng tests/publication-protocol-samples/*.xml + +unit-tests: all + PWD=`pwd`; for i in rpki/*.py; do echo "[$$i]"; PYTHONPATH=$$PWD python $$i; done + +all-tests:: unit-tests + +all-tests:: relaxng + +test all-tests parse-test profile yamltest:: + cd tests; $(MAKE) $@ + + +irbe_cli.usage: irbe_cli.py + python irbe_cli.py --help | sed 's/^/ /' >$@ + +tags: + find . -type f \( -name '*.py' -o -name '*.sql' -o -name '*.rnc' \) ! -name relaxng.py | etags - + +lint: + pylint --rcfile ../scripts/pylint.rc rpki/[a-z]*.py irbe_cli.py irdbd.py pubd.py rootd.py rpkid.py tests/smoketest.py tests/testpoke.py ../myrpki/myrpki.py ../myrpki/yamltest.py + +# Documentation + +doc/irdbd.dot: irdbd.sql + sh ../scripts/graphviz-sql.sh $? >$@ + +doc/pubd.dot: pubd.sql + sh ../scripts/graphviz-sql.sh $? >$@ + +doc/rpkid.dot: rpkid.sql + sh ../scripts/graphviz-sql.sh $? >$@ + +.SUFFIXES: .dot .png .pdf .eps + +.dot.pdf: + dot -Tps2 $? | ps2pdf - $@ + +.dot.eps: + dot -o $@ -Teps $? + +.dot.png: + dot -o $@ -Tpng $? + +TEXT_DOCS = Installation Configuration Left-Right Publication MySQL-Setup MyRPKI + +dot: doc/irdbd.dot doc/pubd.dot doc/rpkid.dot + +eps: doc/irdbd.eps doc/pubd.eps doc/rpkid.eps doc/rpkid-bpki.eps doc/pubd-bpki.eps + +png: doc/irdbd.png doc/pubd.png doc/rpkid.png doc/rpkid-bpki.png doc/pubd-bpki.png + +docclean: + rm -rf doc/html doc/latex doc/xml + +html: dot eps png + TZ='' doxygen + +tgz: html + cd doc && tar -cf - html | gzip -9 >manual.tar.gz + +text: html + for i in ${TEXT_DOCS}; do \ + xsltproc --html doc/tweak-doc.xsl doc/html/$$i.html | \ + html2text -rcfile doc/html2textrc -nobs -ascii | \ + awk -f doc/tweak-doc.awk >doc/$$i; \ + done 2>&1 | \ + awk -f doc/suppress-html-parse-errors.awk 1>&2 + +pdf: doc/irdbd.pdf doc/pubd.pdf doc/rpkid.pdf doc/rpkid-bpki.pdf doc/pubd-bpki.pdf + +pdf: html + cd doc/latex && TZ='' ${MAKE} && ln -f refman.pdf ../manual.pdf + +docs: dot eps png html text tgz pdf diff --git a/rpkid.with_tls/POW b/rpkid.with_tls/POW new file mode 120000 index 00000000..43fccd7b --- /dev/null +++ b/rpkid.with_tls/POW @@ -0,0 +1 @@ +../pow/buildlib/POW
\ No newline at end of file diff --git a/rpkid.with_tls/README b/rpkid.with_tls/README new file mode 100644 index 00000000..2186c5db --- /dev/null +++ b/rpkid.with_tls/README @@ -0,0 +1,351 @@ +$Id$ -*- Text -*- + +Python RPKI production tools. + +Requires Python 2.5. + +See doc/Installation for installation instructions and required +packages. + +The full manual is available in both PDF and HTML formats; the PDF is +in doc/manual.pdf, the HTML is in a compressed tarball +doc/manual.tar.gz. + + + +$Revision$ + +TO DO: + + * Rework handling of surprising responses to up-down requests. + Right now we get confused when we find that parent has issued + a cert that we don't remember requesting, even when we have + the ca_detail object in question sitting in our SQL as + pending. This can happen if we throw an exception later and + don't clean up properly -- which should never happen, but + let's try to be robust about this. + + So we need to be smarter about comparing our own state with + what we get back from our parent and figuring out what to do + next. We probably also need to commit changes to SQL earlier. + + In general we should never have more than one ca_detail in + state pending for a given ca, but the current code blindly + assumes that will never happen and never recovers if that + assumption has been violated. + + STATUS: Started, not complete. Internal tracking state for + whether objects have been published is in place, but there's + no code yet to force retry of failed publication. Some + support for cleaning up extraneous ca_detail objects, dunno + (yet) whether this is enough. + + TIME REQUIRED: One week (remaining). + + * Error handling: make sure that exceptions map correctly to + up-down error codes, flesh out left-right error codes. Note + that the same exception may produce different error codes + depending on which up-down PDU we're processing (sigh). + + Will require code audit for coherency, which is most of the work. + + TIME REQUIRED: Two weeks + + DEPENDS ON: almost everything else, as almost any code change + can raise new exceptions that we'd need to handle. + + STATUS: Not started + + * db.commit(), db.rollback(), code audit for data integrity + issues, fix any data integrity issues that turn up. Among + other issues, need to handle loss of connection to database + server and other MySQL errors. Need to be careful about + recovery action depending on whether we had uncommitted + changes. + + TIME REQUIRED (commit and rollback): 3-4 weeks + + TIME REQUIRED (data integrity audit): 1 week + + TIME REQUIRED (fix data integrity): Unknown, depends on code + audit and results of runtime testing. + + STATUS: Not started + + * Resource subsetting (req_* attributes in up-down protocol), + full implementation. Requires expanding SQL child_cert table + to hold subset masks and rewriting a fair amount of code. + + TIME REQUIRED: 3-4 weeks + + STATUS: Not started + + * Performance testing and profiling. Getting rid of tlslite was + a good first step, and RSA will always be slow without a HSM, + but last time I tried profiling I saw hints that the Python + ASN.1 may be a bottleneck. + + TIME REQUIRED: A few days to do profiling. What happens after + that depends on what profiling finds. + + DEPENDS ON: Serious load testing may require assistance from + others with larger test labs than I have directly available. + + STATUS: Barely started + + * Clean up rootd.py to be usable in a production system. Most + urgent issues are handling of private keys, publishing outputs + in pubd, and reissuing when details or keys change. May not + need much else, as this is not a high-traffic server. + + Alternatively, perhaps rootd's functionality should be merged + into rpkid after all, given that we now believe that anybody + who needs to certify private address space may need to run it. + + TIME REQUIRED: One week if just cleaning up rootd. 2-3 weeks + if folding rootd into rpkid. + + STATUS: Not started + + * Update internals docs (Doxygen). Mostly this means updating + function comments in the Python code, as the rest is + automatic. May require a bit more overview text to explain + the workings and usage of the code. + + TIME REQUIRED: One week. + + STATUS: Ongoing + + * Add HSM support. Architecture includes it, current code does + not. First step here would be talking to somebody with strong + understanding of PKCS# 11. + + TIME REQUIRED: Unknown + + STATUS: Not started + + * Tighten up syntax checking in left-right schema. + + TIME REQUIRED: One day. + + STATUS: Not started + + * rcynic handling of RPKI trust anchors does not yet support + draft-ietf-sidr-ta. Not needed for technical reasons + ("trust-anchor-uri-with-key" method is roughly equivilent and + much simpler), may be required for political reasons. + + TIME REQUIRED: Three days + + STATUS: Not started + + * Investigate using EKU (RFC 3280 4.2.1.13) as an alternative to + wiring in BPKI EE certs for left-right protocol. + + STATUS: Not started + + * Django web UI to RPKI code will require some back-end support, + not yet sure exactly how much. Current plan is that Django + tool just drops data into SQL, at which point it becomes my + problem; if we keep this model, semantics of the existing + command line tools should map fairly well, so this part will + just be a matter of performing essentially the same operations + that the command line UI does now, with SQL tables instead of + CSV files as the data store. + + TIME REQUIRED: Two weeks + + STATUS: Not started + + * Django Web UI to RPKI code as currently envisioned will (also) + require some additional data from rpkid and rcynic that is not + yet available in machine-parsable form, so that UI can report + on status of delegated resources and detailed validation + status. rpkid extensions for this should be relatively + simple, rcynic work may be a bit more complex, or at least + tedious, as it'll be C code generating XML. + + <list_received_resources/> was part of this. + + rcynic XML detail should describe entire certificate + validation chain and status of validation at each stage. + Given tree walk this is probably going to be some kind of + XML-representation tree structure, which i will probably + design as s-expressions first to keep my brain from exploding + with gratuitous XML syntax. + + TIME REQUIRED: 1-2 weeks. + + STATUS: <list_received_resources/> done. + rcynic work started along a different path (XML + reporting of validation failure events, mostly done, + still some corner cases); unclear whether this will + suffice or UI really needs tree structure per above. + + * At present there is no mechanism by which an IRBE could + request signing of objects other than ROAs. Eg, there has + been some discussion of signing S/MIME letters to humans + asking for routing, as an alternative to ROAs. If we decide + to support this at all, it turns into a generalization of the + ROA problem, and suggests that perhaps ROA generation should + be handled somewhere outside of rpkid and only passed to rpkid + for signing. This would be a significant change to the + architecture, as it would remove rpkid's responsibility for + keeping ROAs up to date. + + On further analysis: ROAs are different from S/MIME letters, + in that ROAs are something we want both published and + maintained on an ongoing basis until canceled, while S/MIME + letters are one-offs that probably are not published. So ROAs + need -something- to keep them current, and that something + might as well be rpkid unless we find a strong argument that + it should be something else. So the S/MIME letter + functionality probably stays a different mechanism from ROAs. + + TIME REQUIRED: One week (including deciding what left-right + protocol semantics for this should be) + + STATUS: Not started + + * There has been some discussion both in and out of the SIDR WG + on perhaps dropping TLS out of the up-down protocol, as it is + arguably not providing much that we can't do equally well with + CMS. Left-right and publication are currently not SIDR WG + docs, but presumably they would follow. Dunno where this is + going to go, but assuming for purposes of discussion that we + do drop TLS, we'll want to rip all that code out. This + includes revising BPKI, SQL, left-right and publication + protocols, and code using all of these both in daemons and UI + tools. + + TIME REQUIRED: Three weeks (very rough guess). + + DEPENDS ON: Decision whether to keep or drop TLS. + + STATUS: Not started + + * Integrate UI tools into main code base. Right now there's + this odd split, with the myrpki stuff off to one side, irdbd + (which is also a sample implementation, not a core tool) in + with rpkid, test code scattered hither and yon in all the + above places, and none of it set up nicely either for running + in place or installation. This all needs to be cleaned up, + most likely by reorganizing all of the Python (and POW) code. + + TIME REQUIRED: Two weeks. + + STATUS: Mostly done. POW is still hanging off to the side, + but the myrpki/ directory has now been merged into rpkid/, and + various other bits have been cleaned up. + + * Autoconf review. Right now we're making minimal use of + autoconf, just enough to get the code running on Mac OS and + clean up a few old annoyances. There are other things that + ought to be using autoconf, now that we're stuck with it. Eg, + installation scripts, the build code for POW, etc. In the + long run we might even want to check for usable system OpenSSL + code and libraries: the RFC 3779 code is still off by default + in all known public releases of OpenSSL, but the BPKI stuff + that myrpki does only requires CMS, not RFC 3779, so it may be + able to use the system openssl binary in many cases. + + TIME REQUIRED: One week for an initial pass. + + DEPENDS ON: Installation scripts. Not so much depends on, + really, as two aspects of one interrelated mess. + + STATUS: Not started + + * We need installation scripts. Right now the only thing we + install is rcynic, and that only on FreeBSD. + + TIME REQUIRED: One week, longer if installation for many platforms is + required + + STATUS: Not started + + * We need better and unified documentation. Right now doc is + scattered between rpkid core manual, various READMEs, internal + docuemntation in various tools, etcetera. This is not kind to + the user. Depending on how much hand-written (as opposed to + Doxygen-harvested) doc we end up with, might want to convert + overall to something like the Doxygen/Docbook combination that + the Boost project uses (Boostbook). + + TIME REQUIRED: At least two weeks, plus at least one more week + if making a serious change in doc tools (eg, Boostbook). + + DEPENDS ON: Portions of this would make sense to defer until + after whatever code reorg happens to integrate UI tools, etc. + Most of the hand-written content could be done right away, + might require minor edits later to track reorg changes. + + STATUS: Not started + + * Rewrite irbe_cli.py to use cmd module. Right now irbe_cli is + useful only as a debugging tool for its author, and the + interface is very clunky (even by comparision to other clunky + bits of code in this package). Rewriting to use cmd module + would be a major improvement; some minor challenges here + because irbe_cli integrates so tightly with the Python message + classes representing the left-right and publication protcols; + figuring out how to turn this into a cmd-based program without + massive (and fragile) duplication of code is probably good for + a few days of head scratching. + + TIME REQUIRED: Two weeks (including head scratching) + + STATUS: Not started + + * Clean up testbed tools. There's a collection of hacks that + have been evolving as we've been building the testbed, most of + which just grew as our needs evolved. The main scripts are + checked into the repository, but some of the minor stuff is + not, and some of the automation used in the testbed (cron + scripts, automated use of a version control system (currently + subversion) to archive changes to running data, etcetera) + might be useful to others, so it should be cleaned up and made + available as part of the package. + + TIME REQUIRED: One week + + STATUS: Moving target, but let's say "not started" for the + bits I'm thinking about as I type this. + + * Early (pseudo) operational testing has uncovered a conflict + between RIRs need not to be in the business of attesting to + identities and operators need to have -some- way of finding + out who to call when a RPKI cert is broken. Current proposal + is to allow signature and publication of blobs of whois-like + data; these would be signed by an EE cert using RFC 3779 + inheritance, and would in essence be a self-attestation (no + checking by others, no liability incurred by others, etc) as + to contact information one might use in case of a problem. + This would require a minor change to the rescert profile, so + the SIDR WG would need to sign off on this. As this data + would be published, presumably we would want rcynic to be able + to check it. + + TIME REQUIRED: One week to add to rpkid et al (very rough -- + includes design work to figure out exactly where this would + fit, actual coding probably relatively minor). Perhaps an + additional day or three to add to rcynic and write suitable + search and display tools. + + DEPENDS ON: Agreement to add this to rescert profile. + + STATUS: Not started + + * myrpki.py should have a command that summarizes current state + (data on file, actions it might make sense to take now, etc). + + TIME REQUIRED: A day or two + + STATUS: Not started + + * rcynic needs major rewrite to run multiple rsync processes in + background, to work around tarpit attack by evil publishers. + + TIME REQUIRED: Three weeks (wild guess) + + STATUS: Not started, byond some preliminary design thoughts. diff --git a/rpkid.with_tls/doc/Configuration b/rpkid.with_tls/doc/Configuration new file mode 100644 index 00000000..c641552a --- /dev/null +++ b/rpkid.with_tls/doc/Configuration @@ -0,0 +1,249 @@ +****** Configuration Guide ****** + +This section describes the configuration file syntax and settings. + +Each of the programs that make up the RPKI tookit can potentially take its own +configuration file, but for most uses this is unnecessarily complicated. The +recommended approach is to use a single configuration file, and to put all of +the parameters that a normal user might need to change into a single section of +that configuration file, then reference these common settings from the program- +specific sections of the configuration file via macro expansion. The +configuration file parser supports a limited version of the macro facility used +in OpenSSL's configuration parser. An expression such as + + foo = ${bar::baz} + +sets foo to the value of the baz variable from section bar. The section name +ENV is special: it refers to environment variables. + +***** myrpki.conf ***** + +The default name for the shared configuration file is myrpki.conf. + + [myrpki] + +The [myrpki] section of myrpki.conf contains all the parameters that you really +need to configure. + + # Handle naming hosted resource-holding entity (<self/>) represented + # by this myrpki instance. Syntax is an identifier (ASCII letters, + # digits, hyphen, underscore -- no whitespace, non-ASCII characters, + # or other punctuation). You need to set this. + + handle = Me + +Every resource-holding or server-operating entity needs a "handle", which is +just an identifier by which the entity calls itself. Handles do not need to be +globally unique, but should be chosen with an eye towards debugging operational +problems: it's best if you use a handle that your parents and children will +recognize as being you. + + # Names of various files and directories. Don't change these without + # a good reason. + + roa_csv = roas.csv + prefix_csv = prefixes.csv + asn_csv = asns.csv + xml_filename = myrpki.xml + bpki_resources_directory = bpki/resources + bpki_servers_directory = bpki/servers + +The myrpki tool requires filenames for several input data files, the "business +PKI" databases used to secure CMS and TLS communications, and the XML +intermediate format that it uses. Rather than hardwiring the names into the +code, they're configured here. You can change the names if you must, but the +defaults should be fine in most cases. + + # Whether you want to run your own copy of rpkid (and irdbd). You + # want this on unless somebody else is hosting rpkid service for you. + + run_rpkid = true + + # DNS hostname and server port numbers for rpkid and irdbd, if you're + # running them. rpkid's server host has to be a publicly reachable + # name to be useful; irdbd's server host should always be localhost + # unless you really know what you are doing. Port numbers can be any + # legal TCP port number that you're not using for something else. + + rpkid_server_host = rpkid.example.org + rpkid_server_port = 4404 + irdbd_server_host = localhost + irdbd_server_port = 4403 + +If you're hosting RPKI service for others, or are self-hosting, you want this +on. If somebody else is running rpkid on your behalf and you're just shipping +them your myrpki.xml file, you can turn this off. + +If you're running rpkid at all, you'll need to set at least the +rpkid_server_host parameter here. You may be able to use the default port +numbers, or may need to pick different ones. Unless you plan to run irdbd on a +different machine from rpkid, you should leave irdbd_server_host alone. + + # Whether you want to run your own copy of pubd. In general, it's + # best to use your parent's pubd if you can, to reduce the overall + # number of publication sites that relying parties need to check, so + # don't enable this unless you have a good reason. + + run_pubd = false + + # DNS hostname and server port number for pubd, if you're running it. + # Hostname has to be a publicly reachable name to be useful, port can + # be any legal TCP port number that you're not using for something + # else. + + pubd_server_host = pubd.example.org + pubd_server_port = 4402 + + # Contact information to include in offers of repository service. + # This only matters when we're running pubd. This should be a human + # readable string, perhaps containing an email address or URL. + + pubd_contact_info = repo-man@rpki.example.org + +The myrpki tool will attempt to negotiate publication service for you with +whatever publication service your parent is using, if you let it, so in most +cases you should not need to run pubd unless you need to issue certificates for +private IP address space or private Autononmous System Numbers. + +If you do run pubd, you will need to set pubd_server_host. You may also need to +set pubd_server_port, and you should provide something helpful as contact +information in pubd_contact_info if you plan to offer publication service to +your RPKI children, so that grandchildren (or descendents even further down the +tree) who receive referrals to your service will know how to contact you. + + # Whether you want to run your very own copy of rootd. Don't enable + # this unless you really know what you're doing. + + run_rootd = false + + # Server port number for rootd, if you're running it. This can be any + # legal TCP port number that you're not using for something else. + + rootd_server_port = 4401 + +You shouldn't run rootd unless you're the root of an RPKI tree. Who gets to be +the root of the public RPKI tree is a political issue outside the scope of this +document. For everybody else, the only reason for running rootd (other than +test purposes) would be to support certification of private IP addresses and +ASNs. The core tools can do this without any problem, but the simplified +configuration mechanism does not (yet) make this easy to do. + + # Root of local directory tree where pubd (and rootd, sigh) should + # write out published data. You need to configure this, and the + # configuration should match up with the directory where you point + # rsyncd. Neither pubd nor rsyncd much cares -where- you tell them to + # put this stuff, the important thing is that the rsync:// URIs in + # generated certificates match up with the published objects so that + # relying parties can find and verify rpkid's published outputs. + + publication_base_directory = publication/ + + # rsyncd module name corresponding to publication_base_directory. + # This has to match the module you configured into rsyncd.conf. + # Leave this alone unless you have some need to change it. + + publication_rsync_module = rpki + + # Hostname and optional port number for rsync:// URIs. In most cases + # this should just be the same value as pubd_server_host. + + publication_rsync_server = ${myrpki::pubd_server_host} + +These parameters control the mapping between the rsync URIs presented by rsyncd +and the local filesystem on the machine where pubd and rsyncd run. Any changes +here must also be reflected as changes in rsyncd.conf. In most cases you should +not change the value of publication_rsync_module from the default; since pubd +can't (and should not) rewrite rsyncd.conf, it's best to use a static rsync +module name here and let pubd do its work underneath that name. In most cases +publication_rsync_server should be the same as publication_rsync_server, which +is what the macro invocation in the default setting does. +publication_base_directory, like other pathnames in myrpki.conf, can be either +a relative or absolute pathname; if relative, it's interpreted with respect to +the directory in which the programs in question were started. In this specific +case, it's probably better to use an absolute pathname, since this pathname +must also appear in rsyncd.conf. + + # SQL configuration. You can ignore this if you're not running any of + # the daemons yourself. + + # If you're comfortable with having all of the databases use the same + # MySQL username and password, set those values here. It's ok to + # leave the default username alone, but you should use a locally + # generated password either here or in the individual settings below. + + shared_sql_username = rpki + shared_sql_password = fnord + + # If you want different usernames and passwords for the separate SQL + # databases, enter those settings here; the shared_sql_* settings are + # only referenced here, so you can remove them entirely if you're + # setting everything in this block. + + rpkid_sql_database = rpkid + rpkid_sql_username = ${myrpki::shared_sql_username} + rpkid_sql_password = ${myrpki::shared_sql_password} + + irdbd_sql_database = irdbd + irdbd_sql_username = ${myrpki::shared_sql_username} + irdbd_sql_password = ${myrpki::shared_sql_password} + + pubd_sql_database = pubd + pubd_sql_username = ${myrpki::shared_sql_username} + pubd_sql_password = ${myrpki::shared_sql_password} + +These settings control how rpkid, irdbd, and pubd talk to the MySQL server. At +minimum, each daemon needs its own database; in the simplest configuration, the +username and password can be shared, which is what the macro references in the +default configuration does. If for some reason you need to set different +usernames and passwords for different daemons, you can do so by changing the +daemon-specific variables. + + # Name of OpenSSL binary. You might need to change this if you have + # no system copy installed, or if the system copy doesn't support CMS. + # The copy of openssl built by this package should suffice. + + openssl = openssl + +The myrpki tool uses the openssl command line tool for most of its BPKI +operations, for two reasons: + +* To avoid duplicating CA-management functionality already provided by the + command line tool, and + +* To ease portability of the myrpki tool, so that a "hosted" resource holder + can use it without needing to install entire toolkit. + +The myrpki tool's use of OpenSSL does not require exotic features like RFC 3779 +support, but it does require a version of the tool recent enough to support CMS +and the -ss_cert argument to the ca command. Depending on the platform on which +you are running this code, you may or may not have a system copy of the openssl +tool installed that meets these criteria; if not, the openssl binary built when +you compile the toolkit will suffice. This parameter allows you to tell myrpki +where to find the binary, if necessary; the default just uses the system search +path. + +***** Other configuration files and options ***** + +In most cases the simplified configuration in the [myrpki] section of +myrpki.conf should suffice, but in case you need to tinker, here are details on +the the rest of the configuration options. In most cases the default name of +the configuration file for a program is the name of the program followed by +".conf", and the section name is also named for the program, so that you can +combine sections into a single configuration file as shown with myrpki.conf. + +* Common_configuration_options + +* rpkid_configuration + +* irdbd_configuration + +* pubd_configuration + +* rootd_configuration + +* configuration_of_the_smoketest_test_harness + +* test_description_language_for_the_smoketest_test_harness + +Once you've finished with configuration, the next thing you should read is the +MySQL_setup_instructions. diff --git a/rpkid.with_tls/doc/Installation b/rpkid.with_tls/doc/Installation new file mode 100644 index 00000000..2e169842 --- /dev/null +++ b/rpkid.with_tls/doc/Installation @@ -0,0 +1,139 @@ +****** Installation Guide ****** + +Installation instructions for rpkid et al. + +These are the production-side RPKI tools, for Internet Registries (RIRs, LIRs, +etc). See the "rcynic" program for relying party tools. + +rpkid is a set of Python modules supporting generation and maintenance of +resource certificates. Most of the code is in the rpkid/rpki/ directory. rpkid +itself is a relatively small program that calls the library modules. There are +several other programs that make use of the same libraries, as well as a +collection of test programs. + +At present the package is intended to be run out of its build directory. +Setting up proper installation in a system area using the Python distutils +package would likely not be very hard but has not yet been done. + +Note that initial development of this code has been on FreeBSD, so installation +will probably be easiest on FreeBSD. + +Before attempting to build the package, you need to install any missing +prerequisites. Note that the Python code requires Python version 2.5 or 2.6. +rpkid et al are mostly self-contained, but do require a small number of +external packages to run. + +* If your Python installation does not already include the sources files needed + to compile new Python extension modules, you will need to install whatever + package does include those source files. The need for and name of this + package varies from system to system. On FreeBSD, the base Python interpreter + package includes the development sources; on at least some Linux + distributions, you have to install a separate "python-devel" package or + something similar. If you get compilation errors trying to build the POW code + (below) and the error message says something about the file "Python.h" being + missing, this is almost certainly your problem. + +* http://codespeak.net/lxml/, a Pythonic interface to the Gnome LibXML2 + libraries. lxml in turn requires the LibXML2 C libraries. + + o FreeBSD: /usr/ports/devel/py-lxml + o Fedora: python-lxml.i386 + o Ubuntu: python-lxml + +* http://sourceforge.net/projects/mysql-python/, the Python "db" interface to + MySQL. MySQLdb in turn requires MySQL client and server. rpkid et al have + been tested with MySQL 5.0 and 5.1. + + o FreeBSD: /usr/ports/databases/py-MySQLdb + o Fedora: MySQL-python.i386 + o Ubuntu: python-mysqldb + +rpkid et al also make heavy use of a modified copy of the Python OpenSSL +Wrappers (POW) package, but this copy has enough modifications and additions +that it's included in the subversion tree. + +The next step is to build the OpenSSL and POW binaries. At present the OpenSSL +code is just a snapshot of the OpenSSL development sources, compiled with +special options to enable RFC 3779 support that ISC wrote under previous +contract to ARIN. The POW (Python OpenSSL Wrapper) library is an extended copy +of the stock POW release. + +To build these, cd to the top-level directory in the distribution, run the +configure script, then run "make": + + $ cd $top + $ ./configure + $ make + +This should automatically build everything, in the right order, including +linking the POW extension module with the OpenSSL library to provide RFC 3779 +support. If you get errors building POW, see the above discussion of Python +development sources. + +The architecture is intended to support hardware signing modules (HSMs), but +the code to support them has not been written. + +At this point, you should have all the necessary software installed to run the +core programs, but you will probably want to test it. The test suite requires a +few more external packages, only one of which is Python code. + +* http://pyyaml.org/. Several of the test programs use PyYAML to parse a YAML + description of a simulated allocation hierarchy to test. + + o FreeBSD: /usr/ports/devel/py-yaml + o Ubuntu: python-yaml + +* http://xmlsoft.org/XSLT/. Some of the test code uses xsltproc, from the Gnome + LibXSLT package. + + o FreeBSD: /usr/ports/textproc/libxslt + o Ubuntu: xsltproc + +All tests should be run from the rpkid/ directories. + +Some of the tests require MySQL databases to store their data. To set up all +the databases that the tests will need, run the SQL commands in rpkid/tests/ +smoketest.setup.sql. The MySQL command line client is usually the easiest way +to do this, eg: + + $ cd $top/rpkid + $ mysql -u root -p <tests/smoketest.setup.sql + +To run the tests, run "make all-tests": + + $ cd $top/rpkid + $ make all-tests + +If nothing explodes, your installation is probably ok. Any Python backtraces in +the output indicate a problem. + +There's a last set of tools that only developers should need, as they're only +used when modifying schemas or regenerating the documentation. These tools are +listed here for completeness. + +* http://www.doxygen.org/. Doxygen in turn pulls in several other tools, + notably Graphviz, pdfLaTeX, and Ghostscript. + + o FreeBSD: /usr/ports/devel/doxygen + o Ubuntu: doxygen + +* http://www.mbayer.de/html2text/. The documentation build process uses + xsltproc and html2text to dump flat text versions of a few critical + documentation pages. + + o FreeBSD: /usr/ports/textproc/html2text + +* http://www.thaiopensource.com/relaxng/trang.html. Trang is used to convert + RelaxNG schemas from the human-readable "compact" form to the XML form that + LibXML2 understands. Trang in turn requires Java. + + o FreeBSD: /usr/ports/textproc/trang + +* http://search.cpan.org/dist/SQL-Translator/. SQL-Translator, also known as + "SQL Fairy", includes code to parse an SQL schema and dump a description of + it as Graphviz input. SQL Fairy in turn requires Perl. + + o FreeBSD: /usr/ports/databases/p5-SQL-Translator + +Once you've finished with installation, the next thing you should read is the +Configuration_Guide. diff --git a/rpkid.with_tls/doc/Left-Right b/rpkid.with_tls/doc/Left-Right new file mode 100644 index 00000000..54502d7e --- /dev/null +++ b/rpkid.with_tls/doc/Left-Right @@ -0,0 +1,468 @@ +****** Left-Right Protocol ****** + +The left-right protocol is really two separate client/server protocols over +separate channels between the RPKI engine and the IR back end (IRBE). + +The IRBE is the client for one of the subprotocols, the RPKI engine is the +client for the other. + +***** initiated by the IRBE ***** + +This part of the protcol uses a kind of message-passing. Each object that the +RPKI engine knows about takes five messages: "create", "set", "get", "list", +and "destroy". Actions which are not just data operations on objects are +handled via an SNMP-like mechanism, as if they were fields to be set. For +example, to generate a keypair one "sets" the "generate-keypair" field of a BSC +object, even though there is no such field in the object itself as stored in +SQL. This is a bit of a kludge, but the reason for doing it as if these were +variables being set is to allow composite operations such as creating a BSC, +populating all of its data fields, and generating a keypair, all as a single +operation. With this model, that's trivial, otherwise it's at least two round +trips. + +Fields can be set in either "create" or "set" operations, the difference just +being whether the object already exists. A "get" operation returns all visible +fields of the object. A "list" operation returns a list containing what "get" +would have returned on each of those objects. + +Left-right protocol objects are encoded as signed CMS messages containing XML +as eContent and using an eContentType OID of id-ct-xml +(1.2.840.113549.1.9.16.1.28). These CMS messages are in turn passed as the data +for HTTPS POST operations, with an HTTP content type of "application/x-rpki" +for both the POST data and the response data. + +All operations allow an optional "tag" attribute which can be any alphanumeric +token. The main purpose of the tag attribute is to allow batching of multiple +requests into a single PDU. + +**** <self/> object **** + +A <self/> object represents one virtual RPKI engine. In simple cases where the +RPKI engine operator operates the engine only on their own behalf, there will +only be one <self/> object, representing the engine operator's organization, +but in environments where the engine operator hosts other entities, there will +be one <self/> object per hosted entity (probably including the engine +operator's own organization, considered as a hosted customer of itself). + +Some of the RPKI engine's configured parameters and data are shared by all +hosted entities, but most are tied to a specific <self/> object. Data which are +shared by all hosted entities are referred to as "per-engine" data, data which +are specific to a particular <self/> object are "per-self" data. + +Since all other RPKI engine objects refer to a <self/> object via a +"self_handle" value, one must create a <self/> object before one can usefully +configure any other left-right protocol objects. + +Every <self/> object has a self_handle attribute, which must be specified for +the "create", "set", "get", and "destroy" actions. + +Payload data which can be configured in a <self/> object: + + use_hsm (attribute): + Whether to use a Hardware Signing Module. At present this option has no + effect, as the implementation does not yet support HSMs. + + crl_interval (attribute): + Positive integer representing the planned lifetime of an RPKI CRL for + this <self/>, measured in seconds. + + regen_margin (attribute): + Positive integer representing how long before expiration of an RPKI + certificiate a new one should be generated, measured in seconds. At + present this only affects the one-off EE certificates associated with + ROAs. This parameter also controls how long before the nextUpdate time of + CRL or manifest the CRL or manifest should be updated. + + bpki_cert (element): + BPKI CA certificate for this <self/>. This is used as part of the + certificate chain when validating incoming TLS and CMS messages, and + should be the issuer of cross-certification BPKI certificates used in + <repository/>, <parent/>, and <child/> objects. If the bpki_glue + certificate is in use (below), the bpki_cert certificate should be issued + by the bpki_glue certificate; otherwise, the bpki_cert certificate should + be issued by the per-engine bpki_ta certificate. + + bpki_glue (element): + Another BPKI CA certificate for this <self/>, usually not needed. Certain + pathological cross-certification cases require a two-certificate chain + due to issuer name conflicts. If used, the bpki_glue certificate should + be the issuer of the bpki_cert certificate and should be issued by the + per-engine bpki_ta certificate; if not needed, the bpki_glue certificate + should be left unset. + +Control attributes that can be set to "yes" to force actions: + + rekey: + Start a key rollover for every RPKI CA associated with every <parent/ + > object associated with this <self/> object. This is the first phase of + a key rollover operation. + + revoke: + Revoke any remaining certificates for any expired key associated with any + RPKI CA for any <parent/> object associated with this <self/> object. + This is the second (cleanup) phase for a key rollover operation; it's + separate from the first phase to leave time for new RPKI certificates to + propegate and be installed. + + reissue: + Not implemented, may be removed from protocol. Original theory was that + this operation would force reissuance of any object with a changed key, + but as that happens automatically as part of the key rollover mechanism + this operation seems unnecessary. + + run_now: + Force immediate processing for all tasks associated with this <self/ + > object that would ordinarily be performed under cron. Not currently + implemented. + + publish_world_now: + Force (re)publication of every publishable object for this <self/ + > object. Not currently implemented. Intended to aid in recovery if RPKI + engine and publication engine somehow get out of sync. + +**** <bsc/> object **** + +The <bsc/> ("business signing context") object represents all the BPKI data +needed to sign outgoing CMS or HTTPS messages. Various other objects include +pointers to a <bsc/> object. Whether a particular <self/> uses only one <bsc/ +> or multiple is a configuration decision based on external requirements: the +RPKI engine code doesn't care, it just cares that, for any object representing +a relationship for which it must sign messages, there be a <bsc/> object that +it can use to produce that signature. + +Every <bsc/> object has a bsc_handle, which must be specified for the "create", +"get", "set", and "destroy" actions. Every <bsc/> also has a self_handle +attribute which indicates the <self/> object with which this <bsc/> object is +associated. + +Payload data which can be configured in a <isc/> object: + + signing_cert (element): + BPKI certificate to use when generating a signature. + + signing_cert_crl (element): + CRL which would list signing_cert if it had been revoked. + +Control attributes that can be set to "yes" to force actions: + + generate_keypair: + Generate a new BPKI keypair and return a PKCS #10 certificate request. + The resulting certificate, once issued, should be configured as this + <bsc/> object's signing_cert. + +Additional attributes which may be specified when specifying +"generate_keypair": + + key_type: + Type of BPKI keypair to generate. "rsa" is both the default and, at the + moment, the only allowed value. + + hash_alg: + Cryptographic hash algorithm to use with this keypair. "sha256" is both + the default and, at the moment, the only allowed value. + + key_length: + Length in bits of the keypair to be generated. "2048" is both the default + and, at the moment, the only allowed value. + +Replies to "create" and "set" actions that specify "generate-keypair" include a +<bsc_pkcs10/> element, as do replies to "get" and "list" actions for a <bsc/ +> object for which a "generate-keypair" command has been issued. The RPKI +engine stores the PKCS #10 request, which allows the IRBE to reuse the request +if and when it needs to reissue the corresponding BPKI signing certificate. + +**** <parent/> object **** + +The <parent/> object represents the RPKI engine's view of a particular parent +of the current <self/> object in the up-down protocol. Due to the way that the +resource hierarchy works, a given <self/> may obtain resources from multiple +parents, but it will always have at least one; in the case of IANA or an RIR, +the parent RPKI engine may be a trivial stub. + +Every <parent/> object has a parent_handle, which must be specified for the +"create", "get", "set", and "destroy" actions. Every <parent/> also has a +self_handle attribute which indicates the <self/> object with which this +<parent/> object is associated, a bsc_handle attribute indicating the <bsc/ +> object to be used when signing messages sent to this parent, and a +repository_handle indicating the <repository/> object to be used when +publishing issued by the certificate issued by this parent. + +Payload data which can be configured in a <parent/> object: + + peer_contact_uri (attribute): + HTTPS URI used to contact this parent. + + sia_base (attribute): + The leading portion of an rsync URI that the RPKI engine should use when + composing the publication URI for objects issued by the RPKI certificate + issued by this parent. + + sender_name (attribute): + Sender name to use in the up-down protocol when talking to this parent. + The RPKI engine doesn't really care what this value is, but other + implementations of the up-down protocol do care. + + recipient_name (attribute): + Recipient name to use in the up-down protocol when talking to this + parent. The RPKI engine doesn't really care what this value is, but other + implementations of the up-down protocol do care. + + bpki_cms_cert (element): + BPKI CMS CA certificate for this <parent/>. This is used as part of the + certificate chain when validating incoming CMS messages If the + bpki_cms_glue certificate is in use (below), the bpki_cms_cert + certificate should be issued by the bpki_cms_glue certificate; otherwise, + the bpki_cms_cert certificate should be issued by the bpki_cert + certificate in the <self/> object. + + bpki_cms_glue (element): + Another BPKI CMS CA certificate for this <parent/>, usually not needed. + Certain pathological cross-certification cases require a two-certificate + chain due to issuer name conflicts. If used, the bpki_cms_glue + certificate should be the issuer of the bpki_cms_cert certificate and + should be issued by the bpki_cert certificate in the <self/> object; if + not needed, the bpki_cms_glue certificate should be left unset. + + bpki_https_cert (element): + BPKI HTTPS CA certificate for this <parent/>. This is like the + bpki_cms_cert object, only used for validating incoming TLS messages + rather than CMS. + + bpki_cms_glue (element): + Another BPKI HTTPS CA certificate for this <parent/>, usually not needed. + This is like the bpki_cms_glue certificate, only used for validating + incoming TLS messages rather than CMS. + +Control attributes that can be set to "yes" to force actions: + + rekey: + This is like the rekey command in the <self/> object, but limited to RPKI + CAs under this parent. + + reissue: + This is like the reissue command in the <self/> object, but limited to + RPKI CAs under this parent. + + revoke: + This is like the revoke command in the <self/> object, but limited to + RPKI CAs under this parent. + +**** <child/> object **** + +The <child/> object represents the RPKI engine's view of particular child of +the current <self/> in the up-down protocol. + +Every <child/> object has a child_handle, which must be specified for the +"create", "get", "set", and "destroy" actions. Every <child/> also has a +self_handle attribute which indicates the <self/> object with which this +<child/> object is associated. + +Payload data which can be configured in a <child/> object: + + bpki_cert (element): + BPKI CA certificate for this <child/>. This is used as part of the + certificate chain when validating incoming TLS and CMS messages. If the + bpki_glue certificate is in use (below), the bpki_cert certificate should + be issued by the bpki_glue certificate; otherwise, the bpki_cert + certificate should be issued by the bpki_cert certificate in the <self/ + > object. + + bpki_glue (element): + Another BPKI CA certificate for this <child/>, usually not needed. + Certain pathological cross-certification cases require a two-certificate + chain due to issuer name conflicts. If used, the bpki_glue certificate + should be the issuer of the bpki_cert certificate and should be issued by + the bpki_cert certificate in the <self/> object; if not needed, the + bpki_glue certificate should be left unset. + +Control attributes that can be set to "yes" to force actions: + + reissue: + Not implemented, may be removed from protocol. + +**** <repository/> object **** + +The <repository/> object represents the RPKI engine's view of a particular +publication repository used by the current <self/> object. + +Every <repository/> object has a repository_handle, which must be specified for +the "create", "get", "set", and "destroy" actions. Every <repository/> also has +a self_handle attribute which indicates the <self/> object with which this +<repository/> object is associated. + +Payload data which can be configured in a <repository/> object: + + peer_contact_uri (attribute): + HTTPS URI used to contact this repository. + + bpki_cms_cert (element): + BPKI CMS CA certificate for this <repository/>. This is used as part of + the certificate chain when validating incoming CMS messages If the + bpki_cms_glue certificate is in use (below), the bpki_cms_cert + certificate should be issued by the bpki_cms_glue certificate; otherwise, + the bpki_cms_cert certificate should be issued by the bpki_cert + certificate in the <self/> object. + + bpki_cms_glue (element): + Another BPKI CMS CA certificate for this <repository/>, usually not + needed. Certain pathological cross-certification cases require a two- + certificate chain due to issuer name conflicts. If used, the + bpki_cms_glue certificate should be the issuer of the bpki_cms_cert + certificate and should be issued by the bpki_cert certificate in the + <self/> object; if not needed, the bpki_cms_glue certificate should be + left unset. + + bpki_https_cert (element): + BPKI HTTPS CA certificate for this <repository/>. This is like the + bpki_cms_cert object, only used for validating incoming TLS messages + rather than CMS. + + bpki_cms_glue (element): + Another BPKI HTTPS CA certificate for this <repository/>, usually not + needed. This is like the bpki_cms_glue certificate, only used for + validating incoming TLS messages rather than CMS. + +At present there are no control attributes for <repository/> objects. + +**** <route_origin/> object **** + +This section is out-of-date. The <route_origin/> object has been replaced by +the <list_roa_requests/> IRDB query, but the documentation for that hasn't been +written yet. + +The <route_origin/> object is a kind of prototype for a ROA. It contains all +the information needed to generate a ROA once the RPKI engine obtains the +appropriate RPKI certificates from its parent(s). + +Note that a <route_origin/> object represents a ROA to be generated on behalf +of <self/>, not on behalf of a <child/>. Thus, a hosted entity that has no +children but which does need to generate ROAs would be represented by a hosted +<self/> with no <child/> objects but one or more <route_origin/> objects. While +lumping ROA generation in with the other RPKI engine activities may seem a +little odd at first, it's a natural consequence of the design requirement that +the RPKI daemon never transmit private keys across the network in any form; +given this requirement, the RPKI engine that holds the private keys for an RPKI +certificate must also be the engine which generates any ROAs that derive from +that RPKI certificate. + +The precise content of the <route_origin/> has changed over time as the +underlying ROA specification has changed. The current implementation as of this +writing matches what we expect to see in draft-ietf-sidr-roa-format-03, once it +is issued. In particular, note that the exactMatch boolean from the -02 draft +has been replaced by the prefix and maxLength encoding used in the -03 draft. + +Payload data which can be configured in a <route_origin/> object: + + asn (attribute): + Autonomous System Number (ASN) to place in the generated ROA. A single + ROA can only grant authorization to a single ASN; multiple ASNs require + multiple ROAs, thus multiple <route_origin/> objects. + + ipv4 (attribute): + List of IPv4 prefix and maxLength values, see below for format. + + ipv6 (attribute): + List of IPv6 prefix and maxLength values, see below for format. + +Control attributes that can be set to "yes" to force actions: + + suppress_publication: + Not implemented, may be removed from protocol. + +The lists of IPv4 and IPv6 prefix and maxLength values are represented as +comma-separated text strings, with no whitespace permitted. Each entry in such +a string represents a single prefix/maxLength pair. + +ABNF for these address lists: + + <ROAIPAddress> ::= <address> "/" <prefixlen> [ "-" <max_prefixlen> ] + ; Where <max_prefixlen> defaults to the same + ; value as <prefixlen>. + + <ROAIPAddressList> ::= <ROAIPAddress> *( "," <ROAIPAddress> ) + +For example, "10.0.1.0/24-32,10.0.2.0/24", which is a shorthand form of +"10.0.1.0/24-32,10.0.2.0/24-24". + +***** Operations initiated by the RPKI engine ***** + +The left-right protocol also includes queries from the RPKI engine back to the +IRDB. These queries do not follow the message-passing pattern used in the IRBE- +initiated part of the protocol. Instead, there's a single query back to the +IRDB, with a corresponding response. The CMS and HTTPS encoding are the same as +in the rest of the protocol, but the BPKI certificates will be different as the +back-queries and responses form a separate communication channel. + +**** <list_resources/> messages **** + +The <list_resources/> query and response allow the RPKI engine to ask the IRDB +for information about resources assigned to a particular child. The query must +include both a "self_handle" attribute naming the <self/> that is making the +request and also a "child_handle" attribute naming the child that is the +subject of the query. The query and response also allow an optional "tag" +attribute of the same form used elsewhere in this protocol, to allow batching. + +A <list_resources/> response includes the following attributes, along with the +tag (if specified), self_handle, and child_handle copied from the request: + + valid_until: + A timestamp indicating the date and time at which certificates generated + by the RPKI engine for these data should expire. The timestamp is + expressed as an XML xsd:dateTime, must be expressed in UTC, and must + carry the "Z" suffix indicating UTC. + + asn: + A list of autonomous sequence numbers, expressed as a comma-separated + sequence of decimal integers with no whitespace. + + ipv4: + A list of IPv4 address prefixes and ranges, expressed as a comma- + separated list of prefixes and ranges with no whitespace. See below for + format details. + + ipv6: + A list of IPv6 address prefixes and ranges, expressed as a comma- + separated list of prefixes and ranges with no whitespace. See below for + format details. + +Entries in a list of address prefixes and ranges can be either prefixes, which +are written in the usual address/prefixlen notation, or ranges, which are +expressed as a pair of addresses denoting the beginning and end of the range, +written in ascending order separated by a single "-" character. This format is +superficially similar to the format used for prefix and maxLength values in the +<route_origin/> object, but the semantics differ: note in particular that +<route_origin/> objects don't allow ranges, while <list_resources/> messages +don't allow a maxLength specification. + +***** Error handling ***** + +Error in this protocol are handled at two levels. + +Since all messages in this protocol are conveyed over HTTPS connections, basic +errors are indicated via the HTTP response code. 4xx and 5xx responses indicate +that something bad happened. Errors that make it impossible to decode a query +or encode a response are handled in this way. + +Where possible, errors will result in a <report_error/> message which takes the +place of the expected protocol response message. <report_error/> messages are +CMS-signed XML messages like the rest of this protocol, and thus can be +archived to provide an audit trail. + +<report_error/> messages only appear in replies, never in queries. The +<report_error/> message can appear on either the "forward" (IRBE as client of +RPKI engine) or "back" (RPKI engine as client of IRDB) communication channel. + +The <report_error/> message includes an optional "tag" attribute to assist in +matching the error with a particular query when using batching, and also +includes a "self_handle" attribute indicating the <self/> that issued the +error. + +The error itself is conveyed in the error_code (attribute). The value of this +attribute is a token indicating the specific error that occurred. At present +this will be the name of a Python exception; the production version of this +protocol will nail down the allowed error tokens here, probably in the RelaxNG +schema. + +The body of the <report_error/> element itself is an optional text string; if +present, this is debugging information. At present this capabilty is not used, +debugging information goes to syslog. diff --git a/rpkid.with_tls/doc/MyRPKI b/rpkid.with_tls/doc/MyRPKI new file mode 100644 index 00000000..a3cfb6e0 --- /dev/null +++ b/rpkid.with_tls/doc/MyRPKI @@ -0,0 +1,358 @@ +****** The myrpki tool ****** + +The design of rpkid and friends assumes that certain tasks can be thrown over +the wall to the registry's back end operation. + +This was a deliberate design decision to allow rpkid et al to remain +independent of existing database schema, business PKIs, and so forth that a +registry might already have. All very nice, but it leaves someone who just +wants to test the tools or who has no existing back end with a fairly large +programming project. The myrpki tool attempts to fill that gap. + +myrpki is a basic implementation of what a registry back end would need to use +rpkid and friends. myrpki does not use every available option in the other +programs, nor is it necessarily as efficient as possible. Large registries will +almost certainly want to roll their own tools, perhaps using these as a +starting point. Nevertheless, we hope that myrpki will at least provide a +useful example, and may be adaquate for simple use. + +myrpki is (currently) implemented as a single command line Python program. It +has a number of commands, most of which are used for initial setup, some of +which are used on an ongoing basis. myrpki can be run either in an interactive +mode or by passing a single command on the command line when starting the +program; the former mode is intended to be somewhat human-friendly, the latter +mode is useful in scripting, cron jobs, and automated testing. + +myrpki use has two distinct phases: setup and data maintenance. The setup phase +is primarily about constructing the "business PKI" (BPKI) certificates that the +daemons use to authenticate CMS and HTTPS messages and obtaining the service +URLs needed to configure the daemons. The data maintenance phase is about +configuring local data into the daemons. + +myrpki uses the OpenSSL command line tool for almost all operations on keys and +certificates; the one exception to this is the comamnd which talks directly to +the daemons, as this command uses the same communication libraries as the +daemons themselves do. The intent behind using the OpenSSL command line tool +for everything else is to allow all the other commands to be run without +requiring all the auxiliary packages upon which the daemons depend; this can be +useful, eg, if one wants to run the back-end on a laptop while running the +daemons on a server, in which case one might prefer not to have to install a +bunch of unnecessary packages on the laptop. + +During setup phase myrpki generates and processes small XML messages which it +expects the user to ship to and from its parents, children, etc via some out- +of-band means (email, perhaps with PGP signatures, USB stick, we really don't +care). During data maintenance phase, myrpki does something similar with +another XML file, to allow hosting of RPKI services; in the degenerate case +where an entity is just self-hosting (ie, is running the daemons for itself, +and only for itself), this latter XML file need not be sent anywhere. + +The basic idea here is that a user who has resources maintains a set of .csv +files containing a text representation of the data needed by the back-end, +along with a configuration file containing other parameters. The intent is that +these be very simple files that are easy to generate either by hand or as a +dump from relational database, spreadsheet, awk script, whatever works in your +environment. Given these files, the user then runs myrpki to extract the +relevant information and encode everything about its back end state into an XML +file, which can then be shipped to the appropriate other party. + +Many of the myrpki commands which process XML input write out a new XML file, +either in place or as an entirely new file; in general, these files need to be +sent back to the party that sent the original file. Think of all this as a very +slow packet-based communication channel, where each XML file is a single +packet. In setup phase, there's generally a single round-trip per setup +conversation; in the data maintenance phase, the same XML file keeps bouncing +back and forth between hosted entity and hosting entity. + +Note that, as certificates and CRLs have expiration and nextUpdate values, a +low-level cycle of updates passing between resource holder and rpkid operator +will be necessary as a part of steady state operation. [The current version of +these tools does not yet regenerate these expiring objects, but fixing this +will be a relatively minor matter.] + +The third important kind of file in this system is the configuration_file for +myrpki. This contains a number of sections, some of which are for myrpki, +others of which are for the OpenSSL command line tool, still others of which +are for the various RPKI daemon programs. The examples/ subdirectory contains a +commented version of the configuration file that explains the various +parameters. + +The .csv files read by myrpki are (now) misnamed: formerly, they used the +"excel-tab" format from the Python csv library, but early users kept trying to +make the colums line up, which didn't do what the users expected. So now these +files are just whitespace-delimted, such as a program like "awk" would +understand. + +Keep reading, and don't panic. + +The default configuration file name for myrpki is myrpki.conf. You can change +this using the "-c" option when invoking myrpki, or by setting the environment +variable MYRPKI_CONF. + +See examples/*.csv for commented examples of the several CSV files. Note that +the comments themselves are not legal CSV, they're just present to make it +easier to understand the examples. + +***** myrpki overview ***** + +Which process you need to follow depends on whether you are running rpkid +yourself or will be hosted by somebody else. We call the first case "self- +hosted", because the software treats running rpkid to handle resources that you +yourself hold as if you are an rpkid operator who is hosting an entity that +happens to be yourself. + +"$top" in the following refers to wherever you put the subvert-rpki.hactrn.net +code. Once we have autoconf and "make install" targets, this will be some +system directory or another; for now, it's wherever you checked out a copy of +the code from the subversion repository or unpacked a tarball of the code. + +Most of the setup process looks the same for any resource holder, regardless of +whether they are self-hosting or not. The differences come in the data +maintenence phase. + +The steps needed during setup phase are: + +* Write a configuration file (copy $top/rpkid/examples/myrpki.conf and edit as + needed). You need to configure the [myrpki] section; in theory, the rest of + the file should be ok as it is, at least for simple use. You also need to + create (either by hand or by dumping from a database, spreadsheet, whatever) + the CSV files describing prefixes and ASNs you want to allocate to your + children and ROAs you want created. + +* Initialization ("initialize" command). This creates the local BPKI and other + data structures that can be constructed just based on local data such as the + config file. Other than some internal data structures, the main output of + this step is the "identity.xml" file, which is used as input to later stages. + +In theory it should be safe to run the "initialize" command more than once, in +practice this has not (yet) been tested. + +* Send (email, USB stick, carrier pigeon) identity.xml to each of your parents. + This tells each of your parents what you call yourself, and supplies each + parent with a trust anchor for your resource-holding BPKI. + +* Each of your parents runs the "configure_child" command, giving the + identity.xml you supplied as input. This registers your data with the parent, + including BPKI cross-registration, and generates a return message containing + your parent's BPKI trust anchors, a service URL for contacting your parent + via the "up-down" protocol, and (usually) either an offer of publication + service (if your parent operates a repository) or a referral from your parent + to whatever publication service your parent does use. Referrals include a + CMS-signed authorization token that the repository operator can use to + determine that your parent has given you permission to home underneath your + parent in the publication tree. + +* Each of your parents sends (...) back the response XML file generated by the + "configure_child" command. + +* You feed the response message you just got into myrpki using the + "configure_parent" command. This registers the parent's information in your + database, including BPKI cross-certification, and processes the repository + offer or referral to generate a publication request message. + +* You send (...) the publication request message to the repository. The + contact_info element in the request message should (in theory) provide some + clue as to where you should send this. + +* The repository operator processes your request using myrpki's + "configure_publication_client" command. This registers your information, + including BPKI cross-certification, and generates a response message + containing the repository's BPKI trust anchor and service URL. + +* Repository operator sends (...) the publication confirmation message back to + you. + +* You process the publication confirmation message using myrpki's + "configure_repository" command. + +At this point you should, in theory, have established relationships, exchanged +trust anchors, and obtained service URLs from all of your parents and +repositories. The last setup step is establishing a relationship with your RPKI +service host, if you're not self-hosted, but as this is really just the first +message of an ongoing exchange with your host, it's handled by the data +maintenance commands. + +The two commands used in data maintenence phase are "configure_resources" and +"configure_daemons". The first is used by the resource holder, the second is +used by the host. In the self-hosted case, it is not necessary to run +"configure_resources" at all, myrpki will run it for you automatically. + +***** Hosted case ***** + +The basic steps involved in getting started for a resource holder who is being +hosted by somebody else are: + +* Run through steps listed in the_myrpki_overview_section. + +* Run the configure_resources command to generate myrpki.xml. + +* Send myrpki.xml to the rpkid operator who will be hosting you. + +* Wait for your rpkid operator to ship you back an updated XML file containing + a PKCS #10 certificate request for the BPKI signing context (BSC) created by + rpkid. + +* Run configure_resources again with the XML file you just received, to issue + the BSC certificate and update the XML file again to contain the newly issued + BSC certificate. + +* Send the updated XML file back to your rpkid operator. + +At this point you're done with initial setup. You will need to run +configure_resources again whenever you make any changes to your configuration +file or CSV files. + + Warning: + Once myrpki knows how to update BPKI CRLs, you will also need to run + configure_resources periodically to keep your BPKI CRLs up to date. + +Any time you run configure_resources myrpki, you should send the updated XML +file to your rpkid operator, who should send you a further updated XML file in +response. + +***** Self-hosted case ***** + +The first few steps involved in getting started for a self-hosted resource +holder (that is, a resource holder that runs its own copy of rpkid) are the +same as in the hosted_case above; after that the process diverges. + +The [current] steps are: + +* Follow the basic installation instructions in the_Installation_Guide to build + the RFC-3779-aware OpenSSL code and associated Python extension module. + +* Run through steps listed in the_myrpki_overview_section. + +* Set up the MySQL databases that rpkid et al will use. The package includes a + tool to do this for you, you can use that or do the job by hand. See MySQL + database_setup for details. + +* If you are running your own publication repository (that is, if you are + running pubd), you will also need to set up an rsyncd server or configure + your existing one to serve pubd's output. There's a sample configuration file + in $top/rpkid/examples/rsyncd.conf, but you may need to do something more + complicated if you are already running rsyncd for other purposes. See the + rsync(1) and rsyncd.conf(5) manual pages for more details. + +* Start the daemons. You can use $top/rpkid/start-servers.py to do this, or + write your own script. If you intend to run pubd, you should make sure that + the directory you specified as publication_base_directory exists and is + writable by the userid that will be running pubd, and should also make sure + to start rsyncd. + +* Run myrpki's configure_daemons command, twice, with no arguments. You need to + run the command twice because myrpki has to ask rpkid to create a keypair and + generate a certification request for the BSC. The first pass does this, the + second processes the certification request, issues the BSC, and loads the + result into rpkid. [Yes, we could automate this somehow, if necessary.] + +At this point, if everything went well, rpkid should be up, configured, and +starting to obtain resource certificates from its parents, generate CRLs and +manifests, and so forth. At this point you should go figure out how to use the +relying party tool, rcynic: see $top/rcynic/README if you haven't already done +so. + +If and when you change your CSV files, you should run configure_daemons again +to feed the changes into the daemons. + +***** Hosting case ***** + +If you are running rpkid not just for your own resources but also to host other +resource holders (see hosted_case above), your setup will be almost the same as +in the self-hosted case (see self-hosted_case, above), with one procedural +change: you will need to tell configure_daemons to process the XML files +produced by the resource holders you are hosting. You do this by specifying the +names of all those XML files on as arguments to the configure_daemons command. +So, if you are hosting two friends, Alice and Bob, then, everywhere the +instructions for the self-hosted case say to run configure_daemons with no +arguments, you will instead run it with the names of Alice's and Bob's XML +files as arguments. + +Note that configure_daemons sometimes modifies these XML files, in which case +it will write them back to the same filenames. While it is possible to figure +out the set of circumstances in which this will happen (at present, only when +myrpki has to ask rpkid to create a new BSC keypair and PKCS #10 certificate +request), it may be easiest just to ship back an updated copy of the XML file +after every you run configure_daemons. + +***** "Pure" hosting case ***** + +In general we assume that anybody who bothers to run rpkid is also a resource +holder, but the software does not insist on this. + + Todo: + Er, well, rpkid doesn't, but myrpki now does -- "pure" hosting was an + unused feature that fell by the wayside while simplifying the user + interface. It would be relatively straightforward to add it back if we + ever need it for anything, but the mechanism it used to use no longer + exists -- the old [myirbe] section of the config file has been collapsed + into the [myrpki] section, so testing for existance of the [myrpki] + section no longer works. So we'll need an explicit configuration option, + no big deal, just not worth chasing now. + +A (perhaps) plausible use for this capability would be if you are an rpkid- +running resource holder who wants for some reason to keep the resource-holding +side of your operation completely separate from the rpkid-running side of your +operation. This is essentially the pure-hosting model, just with an internal +hosted entity within a different part of your own organization. + +***** Troubleshooting ***** + +If you run into trouble setting up this package, the first thing to do is +categorize the kind of trouble you are having. If you've gotten far enough to +be running the daemons, check their log files. If you're seeing Python +exceptions, read the error messages. If you're getting TLS errors, check to +make sure that you're using all the right BPKI certificates and service contact +URLs. + +TLS configuration errors are, unfortunately, notoriously difficult to debug, +because connection failures due to misconfiguration happen early, deep in the +guts of the OpenSSL TLS code, where there isn't enough application context +available to provide useful error messages. + +If you've completed the steps above, everything appears to have gone OK, but +nothing seems to be happening, the first thing to do is check the logs to +confirm that nothing is actively broken. rpkid's log should include messages +telling you when it starts and finishes its internal "cron" cycle. It can take +several cron cycles for resources to work their way down from your parent into +a full set of certificates and ROAs, so have a little patience. rpkid's log +should also include messages showing every time it contacts its parent(s) or +attempts to publish anything. + +rcynic in fully verbose mode provides a fairly detailed explanation of what +it's doing and why objects that fail have failed. + +You can use rsync (sic) to examine the contents of a publication repository one +directory at a time, without attempting validation, by running rsync with just +the URI of the directory on its command line: + + $ rsync rsync://rpki.example.org/where/ever/ + +***** Known Issues ***** + +The lxml package provides a Python interface to the Gnome libxml2 and libxslt C +libraries. This code has been quite stable for several years, but initial +testing with lxml compiled and linked against a newer version of libxml2 ran +into problems (specifically, gratuitous RelaxNG schema validation failures). +libxml2 2.7.3 worked; libxml2 2.7.5 did not work on the test machine in +question. Reverting to libxml2 2.7.3 fixed the problem. Rewriting the two lines +of Python code that were triggering the lxml bug appears to have solved the +problem, so the code now works properly with libxml 2.7.5, but if you start +seeing weird XML validation failures, it might be another variation of this +lxml bug. + +An earlier version of this code ran into problems with what appears to be an +implementation restriction in the the GNU linker ("ld") on 64-bit hardware, +resulting in obscure build failures. The workaround for this required use of +shared libraries and is somewhat less portable than the original code, but +without it the code simply would not build in 64-bit environments with the GNU +tools. The current workaround appears to behave properly, but the workaround +requires that the pathname to the RFC-3779-aware OpenSSL shared libraries be +built into the _POW.so Python extension module. At the moment, in the absence +of "make install" targets for the Python code and libraries, this means the +build directory; eventually, once we're using autoconf and installation +targets, this will be the installation directory. If necessary, you can +override this by setting the LD_LIBRARY_PATH environment variable, see the +ld.so man page for details. This is a relatively minor variation on the usual +build issues for shared libraries, it's just annoying because shared libraries +should not be needed here and would not be if not for this GNU linker issue. diff --git a/rpkid.with_tls/doc/MySQL-Setup b/rpkid.with_tls/doc/MySQL-Setup new file mode 100644 index 00000000..f4d82a7b --- /dev/null +++ b/rpkid.with_tls/doc/MySQL-Setup @@ -0,0 +1,64 @@ +****** MySQL Setup ****** + +You need to install MySQL and set up the relevant databases before starting +rpkid, irdbd, or pubd. + +See the Installation_Guide for details on where to download MySQL and find +documentation on installing it. + +See the Configuration_Guide for details on the configuration file settings the +daemons will use to find and authenticate themselves to their respective +databases. + +Before you can (usefully) start any of the daemons, you will need to set up the +MySQL databases they use. You can do this by hand, or you can use the sql- +setup.py script, which prompts you for your MySQL root password then attempts +to do everything else automatically using values from myrpki.conf. + +Using the script is simple: + + $ python sql-setup.py + Please enter your MySQL root password: + +The script should tell you what databases it creates. You can use the -v option +if you want to see more details about what it's doing. + +If you'd prefer to do the SQL setup manually, perhaps because you have valuable +data in other MySQL databases and you don't want to trust some random setup +script with your MySQL root password, you'll need to use the MySQL command line +tool, as follows: + + $ mysql -u root -p + + mysql> CREATE DATABASE irdb_database; + mysql> GRANT all ON irdb_database.* TO irdb_user@localhost IDENTIFIED BY + 'irdb_password'; + mysql> USE irdb_database; + mysql> SOURCE $top/rpkid/irdbd.sql; + mysql> CREATE DATABASE rpki_database; + mysql> GRANT all ON rpki_database.* TO rpki_user@localhost IDENTIFIED BY + 'rpki_password'; + mysql> USE rpki_database; + mysql> SOURCE $top/rpkid/rpkid.sql; + mysql> COMMIT; + mysql> quit + +where irdb_database, irdb_user, irdb_password, rpki_database, rpki_user, and +rpki_password match the values you used in your configuration file. + +If you are running pubd and are doing manual SQL setup, you'll also have to do: + + $ mysql -u root -p + mysql> CREATE DATABASE pubd_database; + mysql> GRANT all ON pubd_database.* TO pubd_user@localhost IDENTIFIED BY + 'pubd_password'; + mysql> USE pubd_database; + mysql> SOURCE $top/rpkid/pubd.sql; + mysql> COMMIT; + mysql> quit + +where pubd_database, pubd_user pubd_password match the values you used in your +configuration file. + +Once you've finished configuring MySQL, the next thing you should read is the +instructions for the myrpki_tool. diff --git a/rpkid.with_tls/doc/Publication b/rpkid.with_tls/doc/Publication new file mode 100644 index 00000000..0e3ce5e5 --- /dev/null +++ b/rpkid.with_tls/doc/Publication @@ -0,0 +1,201 @@ +****** Publication protocol ****** + +The publication protocol is really two separate client/server protocols, +between different parties. + +The first is a configuration protocol for an IRBE to use to configure a +publication engine, the second is the interface by which authorized clients +request publication of specific objects. + +Much of the architecture of the publication protocol is borrowed from the left- +right_protocol: like the left-right protocol, the publication protocol uses +CMS-wrapped XML over HTTPS with the same eContentType OID and the same HTTPS +content-type, and the overall style of the XML messages is very similar to the +left-right protocol. All operations allow an optional "tag" attribute to allow +batching. + +The publication engine operates a single HTTPS server which serves both of +these subprotocols. The two subprotocols share a single server port, but use +distinct URLs to allow demultiplexing. + +***** Publication control subprotocol ***** + +The control subprotocol reuses the message-passing design of the left-right +protocol. Configured objects support the "create", "set", "get", "list", and +"destroy" actions, or a subset thereof when the full set of actions doesn't +make sense. + +**** <config/> object **** + +The <config/> object allows configuration of data that apply to the entire +publication server rather than a particular client. + +There is exactly one <config/> object in the publication server, and it only +supports the "set" and "get" actions -- it cannot be created or destroyed. + +Payload data which can be configured in a <config/> object: + + bpki_crl (element): + This is the BPKI CRL used by the publication server when signing the CMS + wrapper on responses in the publication subprotocol. As the CRL must be + updated at regular intervals, it's not practical to restart the + publication server when the BPKI CRL needs to be updated. The BPKI model + doesn't require use of a BPKI CRL between the IRBE and the publication + server, so we can use the publication control subprotocol to update the + BPKI CRL. + +**** <client/> object **** + +The <client/> object represents one client authorized to use the publication +server. + +The <client/> object supports the full set of "create", "set", "get", "list", +and "destroy" actions. Each client has a "client_handle" attribute, which is +used in responses and must be specified in "create", "set", "get", or "destroy" +actions. + +Payload data which can be configured in a <client/> object: + + base_uri (attribute): + This is the base URI below which this client is allowed to publish data. + The publication server may impose additional constraints in the case of a + child publishing beneath its parent. + + bpki_cert (element): + BPKI CA certificate for this <client/>. This is used as part of the + certificate chain when validating incoming TLS and CMS messages. If the + bpki_glue certificate is in use (below), the bpki_cert certificate should + be issued by the bpki_glue certificate; otherwise, the bpki_cert + certificate should be issued by the publication engine's bpki_ta + certificate. + + bpki_glue (element): + Another BPKI CA certificate for this <client/>, usually not needed. + Certain pathological cross-certification cases require a two-certificate + chain due to issuer name conflicts. If used, the bpki_glue certificate + should be the issuer of the bpki_cert certificate and should be issued by + the publication engine's bpki_ta certificate; if not needed, the + bpki_glue certificate should be left unset. + +***** Publication subprotocol ***** + +The publication subprotocol is structured somewhat differently from the +publication control protocol. Objects in the publication subprotocol represent +objects to be published or objects to be withdrawn from publication. Each kind +of object supports two actions: "publish" and "withdraw". In each case the XML +element representing hte object to be published or withdrawn has a "uri" +attribute which contains the publication URI. For "publish" actions, the XML +element body contains the DER object to be published, encoded in Base64; for +"withdraw" actions, the XML element body is empty. + +In theory, the detailed access control for each kind of object might be +different. In practice, as of this writing, access control for all objects is a +simple check that the client's "base_uri" is a leading substring of the +publication URI. Details of why access control might need to become more +complicated are discussed in a later section. + +**** <certificate/> object **** + +The <certificate/> object represents an RPKI certificate to be published or +withdrawn. + +**** <crl/> object **** + +The <crl/> object represents an RPKI CRL to be published or withdrawn. + +**** <manifest/> object **** + +The <manifest/> object represents an RPKI publication manifest to be published +or withdrawn. + +Note that part of the reason for the batching support in the publication +protocol is because every publication or withdrawal action requires a new +manifest, thus every publication or withdrawal action will involve at least two +objects. + +**** <roa/> object **** + +The <roa/> object represents a ROA to be published or withdrawn. + +***** Error handling ***** + +Error in this protocol are handled at two levels. + +Since all messages in this protocol are conveyed over HTTPS connections, basic +errors are indicated via the HTTP response code. 4xx and 5xx responses indicate +that something bad happened. Errors that make it impossible to decode a query +or encode a response are handled in this way. + +Where possible, errors will result in a <report_error/> message which takes the +place of the expected protocol response message. <report_error/> messages are +CMS-signed XML messages like the rest of this protocol, and thus can be +archived to provide an audit trail. + +<report_error/> messages only appear in replies, never in queries. The +<report_error/> message can appear in both the control and publication +subprotocols. + +The <report_error/> message includes an optional "tag" attribute to assist in +matching the error with a particular query when using batching. + +The error itself is conveyed in the error_code (attribute). The value of this +attribute is a token indicating the specific error that occurred. At present +this will be the name of a Python exception; the production version of this +protocol will nail down the allowed error tokens here, probably in the RelaxNG +schema. + +The body of the <report_error/> element itself is an optional text string; if +present, this is debugging information. At present this capabilty is not used, +debugging information goes to syslog. + +***** Additional access control considerations. ***** + +As detailed above, the publication protocol is trivially simple. This glosses +over two bits of potential complexity: + +* In the case where parent and child are sharing a repository, we'd like to + nest child under parent, because testing has demonstrated that even on + relatively slow hardware the delays involved in setting up separate rsync + connections tend to dominate synchronization time for relying parties. + +* The repository operator might also want to do some checks to assure itself + that what it's about to allow the RPKI engine to publish is not dangerous + toxic waste. + +The up-down protocol includes a mechanism by which a parent can suggest a +publication URI to each of its children. The children are not required to +accept this hint, and the children must make separate arrangements with the +repository operator (who might or might not be the same as the entity that +hosts the children's RPKI engine operations) to use the suggested publication +point, but if everything works out, this allows children to nest cleanly under +their parents publication points, which helps reduce synchronization time for +relying parties. + +In this case, one could argue that the publication server is responsible for +preventing one of its clients (the child in the above description) from +stomping on data published by another of its clients (the parent in the above +description). This goes beyond the basic access check and requires the +publication server to determine whether the parent has given its consent for +the child to publish under the parent. Since the RPKI certificate profile +requires the child's publication point to be indicated in an SIA extension in a +certificate issued by the parent to the child, the publication engine can infer +this permission from the parent's issuance of a certificate to the child. +Since, by definition, the parent also uses this publication server, this is an +easy check, as the publication server should already have the parent's +certificate available by the time it needs to check the child's certificate. + +The previous paragraph only covers a "publish" action for a <certificate/ +> object. For "publish" actions on other objects, the publication server would +need to trace permission back to the certificate issued by the parent; for +"withdraw" actions, the publication server would have to perform the same +checks it would perform for a "publish" action, using the current published +data before withdrawing it. The latter in turn implies an ordering constraint +on "withdraw" actions in order to preserve the data necessary for these access +control decisions; as this may prove impractical, the publication server may +probably need to make periodic sweeps over its published data looking for +orphaned objects, but that's probably a good idea anyway. + +Note that, in this publication model, any agreement that the repository makes +to publish the RPKI engine's output is conditional upon the object to be +published passing whatever access control checks the publication server +imposes. diff --git a/rpkid.with_tls/doc/README b/rpkid.with_tls/doc/README new file mode 100644 index 00000000..8430bcf0 --- /dev/null +++ b/rpkid.with_tls/doc/README @@ -0,0 +1,17 @@ +$Id$ + +Documentation for rpkid and friends. + +Most of the files in this directory are automatically generated from +the source code. Most of the hand-written documentation for rpkid and +friends is written using Doxygen markup so that it will all appear in +the manual. + +The primary tool for generating documentation is Doxygen, which +produces the HTML and PDF versions of the manual. Certain pages are +also dumped from HTML to flat text. + +See rpkid/Makefile for details on how all this happens. + +The full manual is available in both PDF and HTML formats; the PDF is +in manual.pdf, the HTML is in a compressed tarball manual.tar.gz. diff --git a/rpkid.with_tls/doc/cronjob.sh b/rpkid.with_tls/doc/cronjob.sh new file mode 100755 index 00000000..3606a731 --- /dev/null +++ b/rpkid.with_tls/doc/cronjob.sh @@ -0,0 +1,43 @@ +#!/bin/sh - +# $Id$ + +# Copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN") +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# Generate Doxygen manual for RPKI code. + +lock=cronjob.lock + +target=/usr/local/www/data/www.hactrn.net/rpki-dox + +cd `/usr/bin/dirname $0`/.. || exit + +case "$1" in + +locked) + exec >doc/cronjob.log 2>&1 + set -x + export PATH=/bin:/usr/bin:/usr/local/bin + /usr/local/bin/svn update --quiet + (cd .. && ./configure) + /bin/rm -rf doc/html + /usr/bin/make html </dev/null + /usr/local/bin/rsync --archive --itemize-changes --delete-after doc/html/ $target/ + ;; + +*) + exec /usr/bin/lockf -s -t 0 $lock "$0" locked + ;; + +esac diff --git a/rpkid.with_tls/doc/html2textrc b/rpkid.with_tls/doc/html2textrc new file mode 100644 index 00000000..8ea57dc7 --- /dev/null +++ b/rpkid.with_tls/doc/html2textrc @@ -0,0 +1,47 @@ +# $Id$ +# +# html2text configuration settings for postprocessing Doxygen output. +# +BLOCKQUOTE.vspace.after = 1 +BLOCKQUOTE.vspace.before = 1 +CODE.vspace.after = 0 +CODE.vspace.before = 0 +DD.indent = 6 +DIR.indents = 2 +DIR.vspace.before = 1 +DL.vspace.after = 1 +DL.vspace.before = 1 +DT.indent = 2 +DT.vspace.before = 1 +H1.vspace.after = 1 +H1.vspace.before = 0 +H2.vspace.after = 1 +H2.vspace.before = 1 +H3.vspace.after = 1 +H3.vspace.before = 1 +H4.vspace.after = 1 +H4.vspace.before = 1 +H5.vspace.after = 1 +H5.vspace.before = 1 +H6.vspace.after = 1 +H6.vspace.before = 1 +HR.marker = = +IMG.alt.prefix = \ +IMG.alt.suffix = \ +IMG.replace.noalt = +MENU.vspace.after = 1 +MENU.vspace.before = 1 +OL.TYPE = 1 +OL.indents = 5 +OL.vspace.after = 1 +OL.vspace.before = 1 +P.vspace.after = 1 +P.vspace.before = 0 +PRE.indent.left = 2 +PRE.vspace.after = 1 +PRE.vspace.before = 1 +TABLE.vspace.after = 1 +TABLE.vspace.before = 1 +UL.indents = 2 +UL.vspace.after = 1 +UL.vspace.before = 1 diff --git a/rpkid.with_tls/doc/irdbd.dot b/rpkid.with_tls/doc/irdbd.dot new file mode 100644 index 00000000..8541092d --- /dev/null +++ b/rpkid.with_tls/doc/irdbd.dot @@ -0,0 +1,15 @@ +// Automatically generated from irdbd.sql + +digraph test { + edge [arrowtail=none, arrowhead=crow]; + graph [ratio=fill, overlap=false]; + node [label="\N", fillcolor=white, shape=record, style=filled]; + node1 [label="{registrant\n|registrant_id\ SERIAL\ [PK]\lregistrant_handle\ VARCHAR\ [U]\lregistrant_name\ TEXT\ [N]\lregistry_handle\ VARCHAR\ [U,N]\lvalid_until\ DATETIME\l}"]; + node2 [label="{registrant_asn\n|registrant_asn_id\ SERIAL\ [PK]\lstart_as\ BIGINT\lend_as\ BIGINT\lregistrant_id\ BIGINT\ [FK]\l}"]; + node3 [label="{registrant_net\n|registrant_net_id\ SERIAL\ [PK]\lstart_ip\ VARCHAR\lend_ip\ VARCHAR\lversion\ TINYINT\lregistrant_id\ BIGINT\ [FK]\l}"]; + node4 [label="{roa_request\n|roa_request_id\ SERIAL\ [PK]\lroa_request_handle\ VARCHAR\lasn\ BIGINT\l}"]; + node5 [label="{roa_request_prefix\n|prefix\ VARCHAR\ [PK]\lprefixlen\ TINYINT\ [PK]\lmax_prefixlen\ TINYINT\ [PK]\lversion\ TINYINT\lroa_request_id\ BIGINT\ [PK,FK]\l}"]; + node1 -> node2 [arrowtail=none, arrowhead=crow]; + node1 -> node3 [arrowtail=none, arrowhead=crow]; + node4 -> node5 [arrowtail=none, arrowhead=crow]; +} diff --git a/rpkid.with_tls/doc/irdbd.eps b/rpkid.with_tls/doc/irdbd.eps new file mode 100644 index 00000000..dea88b6c --- /dev/null +++ b/rpkid.with_tls/doc/irdbd.eps @@ -0,0 +1,487 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.26.3 (20100126.1600) +%%Title: test +%%Pages: 1 +%%BoundingBox: 36 36 666 308 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 666 308 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 630 272 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% node1 +gsave +0 0 1 nodecolor +newpath 96 151 moveto +96 263 lineto +304 263 lineto +304 151 lineto +closepath fill +1 setlinewidth +filled +0 0 0 nodecolor +newpath 96 151 moveto +96 263 lineto +304 263 lineto +304 151 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +173.5 246.4 moveto 53 (registrant) alignedtext +1 setlinewidth +filled +0 0 0 nodecolor +newpath 96 239 moveto +304 239 lineto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +104 222.4 moveto 152 (registrant_id SERIAL [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +104 206.4 moveto 189 (registrant_handle VARCHAR [U]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +104 190.4 moveto 151 (registrant_name TEXT [N]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +104 174.4 moveto 192 (registry_handle VARCHAR [U,N]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +104 158.4 moveto 133 (valid_until DATETIME) alignedtext +grestore +% node2 +gsave +0 0 1 nodecolor +newpath 0 9 moveto +0 105 lineto +194 105 lineto +194 9 lineto +closepath fill +1 setlinewidth +filled +0 0 0 nodecolor +newpath 0 9 moveto +0 105 lineto +194 105 lineto +194 9 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +57.5 88.4 moveto 79 (registrant_asn) alignedtext +1 setlinewidth +filled +0 0 0 nodecolor +newpath 0 81 moveto +194 81 lineto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +8 64.4 moveto 178 (registrant_asn_id SERIAL [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +8 48.4 moveto 94 (start_as BIGINT) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +8 32.4 moveto 90 (end_as BIGINT) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +8 16.4 moveto 151 (registrant_id BIGINT [FK]) alignedtext +grestore +% node1->node2 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 161.35 150.72 moveto +153.01 138.56 144.18 125.7 135.82 113.53 curveto +stroke +0 0 0 edgecolor +newpath 135.78 113.48 moveto +133.83 102.69 lineto +132.95 109.36 lineto +130.12 105.24 lineto +130.12 105.24 lineto +130.12 105.24 lineto +132.95 109.36 lineto +126.41 107.79 lineto +135.78 113.48 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 135.78 113.48 moveto +133.83 102.69 lineto +132.95 109.36 lineto +130.12 105.24 lineto +130.12 105.24 lineto +130.12 105.24 lineto +132.95 109.36 lineto +126.41 107.79 lineto +135.78 113.48 lineto +closepath stroke +grestore +% node3 +gsave +0 0 1 nodecolor +newpath 212 1 moveto +212 113 lineto +404 113 lineto +404 1 lineto +closepath fill +1 setlinewidth +filled +0 0 0 nodecolor +newpath 212 1 moveto +212 113 lineto +404 113 lineto +404 1 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +269.5 96.4 moveto 77 (registrant_net) alignedtext +1 setlinewidth +filled +0 0 0 nodecolor +newpath 212 89 moveto +404 89 lineto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +220 72.4 moveto 176 (registrant_net_id SERIAL [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +220 56.4 moveto 111 (start_ip VARCHAR) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +220 40.4 moveto 107 (end_ip VARCHAR) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +220 24.4 moveto 101 (version TINYINT) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +220 8.4 moveto 151 (registrant_id BIGINT [FK]) alignedtext +grestore +% node1->node3 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 240.52 150.72 moveto +247.44 141.11 254.68 131.06 261.74 121.26 curveto +stroke +0 0 0 edgecolor +newpath 261.77 121.21 moveto +271.26 115.73 lineto +264.69 117.16 lineto +267.61 113.1 lineto +267.61 113.1 lineto +267.61 113.1 lineto +264.69 117.16 lineto +263.96 110.47 lineto +261.77 121.21 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 261.77 121.21 moveto +271.26 115.73 lineto +264.69 117.16 lineto +267.61 113.1 lineto +267.61 113.1 lineto +267.61 113.1 lineto +264.69 117.16 lineto +263.96 110.47 lineto +261.77 121.21 lineto +closepath stroke +grestore +% node4 +gsave +0 0 1 nodecolor +newpath 424.5 167 moveto +424.5 247 lineto +619.5 247 lineto +619.5 167 lineto +closepath fill +1 setlinewidth +filled +0 0 0 nodecolor +newpath 424.5 167 moveto +424.5 247 lineto +619.5 247 lineto +619.5 167 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +489 230.4 moveto 66 (roa_request) alignedtext +1 setlinewidth +filled +0 0 0 nodecolor +newpath 424.5 223 moveto +619.5 223 lineto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +432.5 206.4 moveto 165 (roa_request_id SERIAL [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +432.5 190.4 moveto 179 (roa_request_handle VARCHAR) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +432.5 174.4 moveto 70 (asn BIGINT) alignedtext +grestore +% node5 +gsave +0 0 1 nodecolor +newpath 421.5 1 moveto +421.5 113 lineto +622.5 113 lineto +622.5 1 lineto +closepath fill +1 setlinewidth +filled +0 0 0 nodecolor +newpath 421.5 1 moveto +421.5 113 lineto +622.5 113 lineto +622.5 1 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +469 96.4 moveto 106 (roa_request_prefix) alignedtext +1 setlinewidth +filled +0 0 0 nodecolor +newpath 421.5 89 moveto +622.5 89 lineto +stroke +0 0 0 nodecolor +14 /Times-Roman set_font +429.5 72.4 moveto 133 (prefix VARCHAR [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +429.5 56.4 moveto 140 (prefixlen TINYINT [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +429.5 40.4 moveto 170 (max_prefixlen TINYINT [PK]) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +429.5 24.4 moveto 101 (version TINYINT) alignedtext +0 0 0 nodecolor +14 /Times-Roman set_font +429.5 8.4 moveto 185 (roa_request_id BIGINT [PK,FK]) alignedtext +grestore +% node4->node5 +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 522 166.8 moveto +522 153.41 522 138.11 522 123.27 curveto +stroke +0 0 0 edgecolor +newpath 522 123.1 moveto +526.5 113.1 lineto +522 118.1 lineto +522 113.1 lineto +522 113.1 lineto +522 113.1 lineto +522 118.1 lineto +517.5 113.1 lineto +522 123.1 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 522 123.1 moveto +526.5 113.1 lineto +522 118.1 lineto +522 113.1 lineto +522 113.1 lineto +522 113.1 lineto +522 118.1 lineto +517.5 113.1 lineto +522 123.1 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff --git a/rpkid.with_tls/doc/irdbd.pdf b/rpkid.with_tls/doc/irdbd.pdf Binary files differnew file mode 100644 index 00000000..2909671c --- /dev/null +++ b/rpkid.with_tls/doc/irdbd.pdf diff --git a/rpkid.with_tls/doc/irdbd.png b/rpkid.with_tls/doc/irdbd.png Binary files differnew file mode 100644 index 00000000..b061c063 --- /dev/null +++ b/rpkid.with_tls/doc/irdbd.png diff --git a/rpkid.with_tls/doc/manual.html b/rpkid.with_tls/doc/manual.html new file mode 100644 index 00000000..5ff9530c --- /dev/null +++ b/rpkid.with_tls/doc/manual.html @@ -0,0 +1,10 @@ +<!-- $Id$ --> +<html> + <head> + <meta http-equiv="refresh" content="0; URL=http://www.hactrn.net/rpki-dox/index.html"> + </head> + <body> + Automatically redirecting to online manual; if this doesn't work, please go to + <a href="http://www.hactrn.net/rpki-dox/">http://www.hactrn.net/rpki-dox/</a> + </body> +</html> diff --git a/rpkid.with_tls/doc/manual.pdf b/rpkid.with_tls/doc/manual.pdf new file mode 100644 index 00000000..a89569a5 --- /dev/null +++ b/rpkid.with_tls/doc/manual.pdf @@ -0,0 +1,144923 @@ +%PDF-1.4 +5 0 obj +<< /S /GoTo /D (section.1) >> +endobj +8 0 obj +(\376\377\000R\000P\000K\000I\000\040\000E\000n\000g\000i\000n\000e\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e\000\040\000M\000a\000n\000u\000a\000l) +endobj +9 0 obj +<< /S /GoTo /D (section.2) >> +endobj +12 0 obj +(\376\377\000O\000v\000e\000r\000v\000i\000e\000w) +endobj +13 0 obj +<< /S /GoTo /D (subsection.2.1) >> +endobj +16 0 obj +(\376\377\000T\000e\000r\000m\000i\000n\000o\000l\000o\000g\000y) +endobj +17 0 obj +<< /S /GoTo /D (subsection.2.2) >> +endobj +20 0 obj +(\376\377\000P\000r\000o\000g\000r\000a\000m\000s) +endobj +21 0 obj +<< /S /GoTo /D (subsubsection.2.2.1) >> +endobj +24 0 obj +(\376\377\000r\000p\000k\000i\000d) +endobj +25 0 obj +<< /S /GoTo /D (subsubsection.2.2.2) >> +endobj +28 0 obj +(\376\377\000p\000u\000b\000d) +endobj +29 0 obj +<< /S /GoTo /D (subsubsection.2.2.3) >> +endobj +32 0 obj +(\376\377\000r\000o\000o\000t\000d) +endobj +33 0 obj +<< /S /GoTo /D (subsubsection.2.2.4) >> +endobj +36 0 obj +(\376\377\000i\000r\000d\000b\000d) +endobj +37 0 obj +<< /S /GoTo /D (subsubsection.2.2.5) >> +endobj +40 0 obj +(\376\377\000s\000m\000o\000k\000e\000t\000e\000s\000t) +endobj +41 0 obj +<< /S /GoTo /D (subsubsection.2.2.6) >> +endobj +44 0 obj +(\376\377\000y\000a\000m\000l\000t\000e\000s\000t) +endobj +45 0 obj +<< /S /GoTo /D (subsection.2.3) >> +endobj +48 0 obj +(\376\377\000F\000u\000r\000t\000h\000e\000r\000\040\000R\000e\000a\000d\000i\000n\000g) +endobj +49 0 obj +<< /S /GoTo /D (subsection.2.4) >> +endobj +52 0 obj +(\376\377\000G\000e\000t\000t\000i\000n\000g\000\040\000S\000t\000a\000r\000t\000e\000d) +endobj +53 0 obj +<< /S /GoTo /D (section.3) >> +endobj +56 0 obj +(\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n\000\040\000G\000u\000i\000d\000e) +endobj +57 0 obj +<< /S /GoTo /D (section.4) >> +endobj +60 0 obj +(\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000G\000u\000i\000d\000e) +endobj +61 0 obj +<< /S /GoTo /D (subsection.4.1) >> +endobj +64 0 obj +(\376\377\000m\000y\000r\000p\000k\000i\000.\000c\000o\000n\000f) +endobj +65 0 obj +<< /S /GoTo /D (subsection.4.2) >> +endobj +68 0 obj +(\376\377\000O\000t\000h\000e\000r\000\040\000c\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000f\000i\000l\000e\000s\000\040\000a\000n\000d\000\040\000o\000p\000t\000i\000o\000n\000s) +endobj +69 0 obj +<< /S /GoTo /D (subsection.4.3) >> +endobj +72 0 obj +(\376\377\000C\000o\000m\000m\000o\000n\000\040\000C\000o\000n\000f\000i\000g\000u\000r\000a\000t\000i\000o\000n\000\040\000O\000p\000t\000i\000o\000n\000s) +endobj +73 0 obj +<< /S /GoTo /D (subsection.4.4) >> +endobj +76 0 obj +(\376\377\000r\000p\000k\000i\000d\000.\000c\000o\000n\000f) +endobj +77 0 obj +<< /S /GoTo /D (subsection.4.5) >> +endobj +80 0 obj +(\376\377\000i\000r\000d\000b\000d\000.\000c\000o\000n\000f) +endobj +81 0 obj +<< /S /GoTo /D (subsection.4.6) >> +endobj +84 0 obj +(\376\377\000p\000u\000b\000d\000.\000c\000o\000n\000f) +endobj +85 0 obj +<< /S /GoTo /D (subsection.4.7) >> +endobj +88 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000c\000o\000n\000f) +endobj +89 0 obj +<< /S /GoTo /D (subsection.4.8) >> +endobj +92 0 obj +(\376\377\000s\000m\000o\000k\000e\000t\000e\000s\000t\000.\000c\000o\000n\000f) +endobj +93 0 obj +<< /S /GoTo /D (subsection.4.9) >> +endobj +96 0 obj +(\376\377\000s\000m\000o\000k\000e\000t\000e\000s\000t\000.\000y\000a\000m\000l) +endobj +97 0 obj +<< /S /GoTo /D (section.5) >> +endobj +100 0 obj +(\376\377\000M\000y\000S\000Q\000L\000\040\000S\000e\000t\000u\000p) +endobj +101 0 obj +<< /S /GoTo /D (section.6) >> +endobj +104 0 obj +(\376\377\000T\000h\000e\000\040\000m\000y\000r\000p\000k\000i\000\040\000t\000o\000o\000l) +endobj +105 0 obj +<< /S /GoTo /D (subsection.6.1) >> +endobj +108 0 obj +(\376\377\000m\000y\000r\000p\000k\000i\000\040\000o\000v\000e\000r\000v\000i\000e\000w) +endobj +109 0 obj +<< /S /GoTo /D (subsection.6.2) >> +endobj +112 0 obj +(\376\377\000H\000o\000s\000t\000e\000d\000\040\000c\000a\000s\000e) +endobj +113 0 obj +<< /S /GoTo /D (subsection.6.3) >> +endobj +116 0 obj +(\376\377\000S\000e\000l\000f\000-\000h\000o\000s\000t\000e\000d\000\040\000c\000a\000s\000e) +endobj +117 0 obj +<< /S /GoTo /D (subsection.6.4) >> +endobj +120 0 obj +(\376\377\000H\000o\000s\000t\000i\000n\000g\000\040\000c\000a\000s\000e) +endobj +121 0 obj +<< /S /GoTo /D (subsection.6.5) >> +endobj +124 0 obj +(\376\377\000`\000\250\000P\000u\000r\000e\000`\000\250\000\040\000h\000o\000s\000t\000i\000n\000g\000\040\000c\000a\000s\000e) +endobj +125 0 obj +<< /S /GoTo /D (subsection.6.6) >> +endobj +128 0 obj +(\376\377\000T\000r\000o\000u\000b\000l\000e\000s\000h\000o\000o\000t\000i\000n\000g) +endobj +129 0 obj +<< /S /GoTo /D (subsection.6.7) >> +endobj +132 0 obj +(\376\377\000K\000n\000o\000w\000n\000\040\000I\000s\000s\000u\000e\000s) +endobj +133 0 obj +<< /S /GoTo /D (section.7) >> +endobj +136 0 obj +(\376\377\000L\000e\000f\000t\000-\000R\000i\000g\000h\000t\000\040\000P\000r\000o\000t\000o\000c\000o\000l) +endobj +137 0 obj +<< /S /GoTo /D (subsection.7.1) >> +endobj +140 0 obj +(\376\377\000i\000n\000i\000t\000i\000a\000t\000e\000d\000\040\000b\000y\000\040\000t\000h\000e\000\040\000I\000R\000B\000E) +endobj +141 0 obj +<< /S /GoTo /D (subsubsection.7.1.1) >> +endobj +144 0 obj +(\376\377\000<\000s\000e\000l\000f\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +145 0 obj +<< /S /GoTo /D (subsubsection.7.1.2) >> +endobj +148 0 obj +(\376\377\000<\000b\000s\000c\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +149 0 obj +<< /S /GoTo /D (subsubsection.7.1.3) >> +endobj +152 0 obj +(\376\377\000<\000p\000a\000r\000e\000n\000t\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +153 0 obj +<< /S /GoTo /D (subsubsection.7.1.4) >> +endobj +156 0 obj +(\376\377\000<\000c\000h\000i\000l\000d\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +157 0 obj +<< /S /GoTo /D (subsubsection.7.1.5) >> +endobj +160 0 obj +(\376\377\000<\000r\000e\000p\000o\000s\000i\000t\000o\000r\000y\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +161 0 obj +<< /S /GoTo /D (subsubsection.7.1.6) >> +endobj +164 0 obj +(\376\377\000<\000r\000o\000u\000t\000e\000\137\000o\000r\000i\000g\000i\000n\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +165 0 obj +<< /S /GoTo /D (subsection.7.2) >> +endobj +168 0 obj +(\376\377\000O\000p\000e\000r\000a\000t\000i\000o\000n\000s\000\040\000i\000n\000i\000t\000i\000a\000t\000e\000d\000\040\000b\000y\000\040\000t\000h\000e\000\040\000R\000P\000K\000I\000\040\000e\000n\000g\000i\000n\000e) +endobj +169 0 obj +<< /S /GoTo /D (subsubsection.7.2.1) >> +endobj +172 0 obj +(\376\377\000<\000l\000i\000s\000t\000\137\000r\000e\000s\000o\000u\000r\000c\000e\000s\000/\000>\000\040\000m\000e\000s\000s\000a\000g\000e\000s) +endobj +173 0 obj +<< /S /GoTo /D (subsection.7.3) >> +endobj +176 0 obj +(\376\377\000E\000r\000r\000o\000r\000\040\000h\000a\000n\000d\000l\000i\000n\000g) +endobj +177 0 obj +<< /S /GoTo /D (section.8) >> +endobj +180 0 obj +(\376\377\000P\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000p\000r\000o\000t\000o\000c\000o\000l) +endobj +181 0 obj +<< /S /GoTo /D (subsection.8.1) >> +endobj +184 0 obj +(\376\377\000P\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000c\000o\000n\000t\000r\000o\000l\000\040\000s\000u\000b\000p\000r\000o\000t\000o\000c\000o\000l) +endobj +185 0 obj +<< /S /GoTo /D (subsubsection.8.1.1) >> +endobj +188 0 obj +(\376\377\000<\000c\000o\000n\000f\000i\000g\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +189 0 obj +<< /S /GoTo /D (subsubsection.8.1.2) >> +endobj +192 0 obj +(\376\377\000<\000c\000l\000i\000e\000n\000t\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +193 0 obj +<< /S /GoTo /D (subsection.8.2) >> +endobj +196 0 obj +(\376\377\000P\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\040\000s\000u\000b\000p\000r\000o\000t\000o\000c\000o\000l) +endobj +197 0 obj +<< /S /GoTo /D (subsubsection.8.2.1) >> +endobj +200 0 obj +(\376\377\000<\000c\000e\000r\000t\000i\000f\000i\000c\000a\000t\000e\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +201 0 obj +<< /S /GoTo /D (subsubsection.8.2.2) >> +endobj +204 0 obj +(\376\377\000<\000c\000r\000l\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +205 0 obj +<< /S /GoTo /D (subsubsection.8.2.3) >> +endobj +208 0 obj +(\376\377\000<\000m\000a\000n\000i\000f\000e\000s\000t\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +209 0 obj +<< /S /GoTo /D (subsubsection.8.2.4) >> +endobj +212 0 obj +(\376\377\000<\000r\000o\000a\000/\000>\000\040\000o\000b\000j\000e\000c\000t) +endobj +213 0 obj +<< /S /GoTo /D (subsection.8.3) >> +endobj +216 0 obj +(\376\377\000E\000r\000r\000o\000r\000\040\000h\000a\000n\000d\000l\000i\000n\000g) +endobj +217 0 obj +<< /S /GoTo /D (subsection.8.4) >> +endobj +220 0 obj +(\376\377\000A\000d\000d\000i\000t\000i\000o\000n\000a\000l\000\040\000a\000c\000c\000e\000s\000s\000\040\000c\000o\000n\000t\000r\000o\000l\000\040\000c\000o\000n\000s\000i\000d\000e\000r\000a\000t\000i\000o\000n\000s\000.) +endobj +221 0 obj +<< /S /GoTo /D (section.9) >> +endobj +224 0 obj +(\376\377\000S\000Q\000L\000\040\000d\000a\000t\000a\000b\000a\000s\000e\000\040\000s\000c\000h\000e\000m\000a\000s) +endobj +225 0 obj +<< /S /GoTo /D (subsection.9.1) >> +endobj +228 0 obj +(\376\377\000r\000p\000k\000i\000d\000\040\000S\000Q\000L\000\040\000s\000c\000h\000e\000m\000a) +endobj +229 0 obj +<< /S /GoTo /D (subsection.9.2) >> +endobj +232 0 obj +(\376\377\000p\000u\000b\000d\000\040\000S\000Q\000L\000\040\000S\000c\000h\000e\000m\000a) +endobj +233 0 obj +<< /S /GoTo /D (subsection.9.3) >> +endobj +236 0 obj +(\376\377\000i\000r\000d\000b\000d\000\040\000S\000Q\000L\000\040\000S\000c\000h\000e\000m\000a) +endobj +237 0 obj +<< /S /GoTo /D (section.10) >> +endobj +240 0 obj +(\376\377\000B\000P\000K\000I\000\040\000m\000o\000d\000e\000l) +endobj +241 0 obj +<< /S /GoTo /D (section.11) >> +endobj +244 0 obj +(\376\377\000T\000o\000d\000o\000\040\000L\000i\000s\000t) +endobj +245 0 obj +<< /S /GoTo /D (section.12) >> +endobj +248 0 obj +(\376\377\000N\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +249 0 obj +<< /S /GoTo /D (subsection.12.1) >> +endobj +252 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000i\000r\000b\000e\000\137\000c\000l\000i) +endobj +253 0 obj +<< /S /GoTo /D (subsubsection.12.1.1) >> +endobj +256 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +257 0 obj +<< /S /GoTo /D (subsubsection.12.1.2) >> +endobj +260 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +261 0 obj +<< /S /GoTo /D (subsubsection.12.1.3) >> +endobj +264 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +265 0 obj +<< /S /GoTo /D (subsection.12.2) >> +endobj +268 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000i\000r\000d\000b\000d) +endobj +269 0 obj +<< /S /GoTo /D (subsubsection.12.2.1) >> +endobj +272 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +273 0 obj +<< /S /GoTo /D (subsubsection.12.2.2) >> +endobj +276 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +277 0 obj +<< /S /GoTo /D (subsubsection.12.2.3) >> +endobj +280 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +281 0 obj +<< /S /GoTo /D (subsection.12.3) >> +endobj +284 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000p\000u\000b\000d) +endobj +285 0 obj +<< /S /GoTo /D (subsubsection.12.3.1) >> +endobj +288 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +289 0 obj +<< /S /GoTo /D (subsubsection.12.3.2) >> +endobj +292 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +293 0 obj +<< /S /GoTo /D (subsubsection.12.3.3) >> +endobj +296 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +297 0 obj +<< /S /GoTo /D (subsection.12.4) >> +endobj +300 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000o\000o\000t\000d) +endobj +301 0 obj +<< /S /GoTo /D (subsubsection.12.4.1) >> +endobj +304 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +305 0 obj +<< /S /GoTo /D (subsubsection.12.4.2) >> +endobj +308 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +309 0 obj +<< /S /GoTo /D (subsubsection.12.4.3) >> +endobj +312 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +313 0 obj +<< /S /GoTo /D (subsection.12.5) >> +endobj +316 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i) +endobj +317 0 obj +<< /S /GoTo /D (subsection.12.6) >> +endobj +320 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000\137\000\137\000d\000o\000c\000\137\000\137) +endobj +321 0 obj +<< /S /GoTo /D (subsection.12.7) >> +endobj +324 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000a\000d\000n\000s) +endobj +325 0 obj +<< /S /GoTo /D (subsubsection.12.7.1) >> +endobj +328 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +329 0 obj +<< /S /GoTo /D (subsubsection.12.7.2) >> +endobj +332 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +333 0 obj +<< /S /GoTo /D (subsubsection.12.7.3) >> +endobj +336 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +337 0 obj +<< /S /GoTo /D (subsection.12.8) >> +endobj +340 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000a\000s\000y\000n\000c) +endobj +341 0 obj +<< /S /GoTo /D (subsubsection.12.8.1) >> +endobj +344 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +345 0 obj +<< /S /GoTo /D (subsubsection.12.8.2) >> +endobj +348 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +349 0 obj +<< /S /GoTo /D (subsubsection.12.8.3) >> +endobj +352 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +353 0 obj +<< /S /GoTo /D (subsection.12.9) >> +endobj +356 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000c\000l\000i) +endobj +357 0 obj +<< /S /GoTo /D (subsubsection.12.9.1) >> +endobj +360 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +361 0 obj +<< /S /GoTo /D (subsubsection.12.9.2) >> +endobj +364 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +365 0 obj +<< /S /GoTo /D (subsubsection.12.9.3) >> +endobj +368 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +369 0 obj +<< /S /GoTo /D (subsection.12.10) >> +endobj +372 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000c\000o\000n\000f\000i\000g) +endobj +373 0 obj +<< /S /GoTo /D (subsubsection.12.10.1) >> +endobj +376 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +377 0 obj +<< /S /GoTo /D (subsection.12.11) >> +endobj +380 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s) +endobj +381 0 obj +<< /S /GoTo /D (subsubsection.12.11.1) >> +endobj +384 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +385 0 obj +<< /S /GoTo /D (subsection.12.12) >> +endobj +388 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s) +endobj +389 0 obj +<< /S /GoTo /D (subsubsection.12.12.1) >> +endobj +392 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +393 0 obj +<< /S /GoTo /D (subsubsection.12.12.2) >> +endobj +396 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +397 0 obj +<< /S /GoTo /D (subsubsection.12.12.3) >> +endobj +400 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +401 0 obj +<< /S /GoTo /D (subsection.12.13) >> +endobj +404 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000i\000p\000a\000d\000d\000r\000s) +endobj +405 0 obj +<< /S /GoTo /D (subsubsection.12.13.1) >> +endobj +408 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +409 0 obj +<< /S /GoTo /D (subsubsection.12.13.2) >> +endobj +412 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +413 0 obj +<< /S /GoTo /D (subsection.12.14) >> +endobj +416 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t) +endobj +417 0 obj +<< /S /GoTo /D (subsubsection.12.14.1) >> +endobj +420 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +421 0 obj +<< /S /GoTo /D (subsubsection.12.14.2) >> +endobj +424 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +425 0 obj +<< /S /GoTo /D (subsection.12.15) >> +endobj +428 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000l\000o\000g) +endobj +429 0 obj +<< /S /GoTo /D (subsubsection.12.15.1) >> +endobj +432 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +433 0 obj +<< /S /GoTo /D (subsubsection.12.15.2) >> +endobj +436 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +437 0 obj +<< /S /GoTo /D (subsubsection.12.15.3) >> +endobj +440 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +441 0 obj +<< /S /GoTo /D (subsection.12.16) >> +endobj +444 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000m\000a\000n\000i\000f\000e\000s\000t) +endobj +445 0 obj +<< /S /GoTo /D (subsubsection.12.16.1) >> +endobj +448 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +449 0 obj +<< /S /GoTo /D (subsection.12.17) >> +endobj +452 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i) +endobj +453 0 obj +<< /S /GoTo /D (subsubsection.12.17.1) >> +endobj +456 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +457 0 obj +<< /S /GoTo /D (subsubsection.12.17.2) >> +endobj +460 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +461 0 obj +<< /S /GoTo /D (subsubsection.12.17.3) >> +endobj +464 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +465 0 obj +<< /S /GoTo /D (subsection.12.18) >> +endobj +468 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000o\000i\000d\000s) +endobj +469 0 obj +<< /S /GoTo /D (subsubsection.12.18.1) >> +endobj +472 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +473 0 obj +<< /S /GoTo /D (subsubsection.12.18.2) >> +endobj +476 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +477 0 obj +<< /S /GoTo /D (subsection.12.19) >> +endobj +480 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n) +endobj +481 0 obj +<< /S /GoTo /D (subsubsection.12.19.1) >> +endobj +484 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +485 0 obj +<< /S /GoTo /D (subsection.12.20) >> +endobj +488 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000r\000e\000l\000a\000x\000n\000g) +endobj +489 0 obj +<< /S /GoTo /D (subsubsection.12.20.1) >> +endobj +492 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +493 0 obj +<< /S /GoTo /D (subsection.12.21) >> +endobj +496 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t) +endobj +497 0 obj +<< /S /GoTo /D (subsubsection.12.21.1) >> +endobj +500 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +501 0 obj +<< /S /GoTo /D (subsubsection.12.21.2) >> +endobj +504 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +505 0 obj +<< /S /GoTo /D (subsubsection.12.21.3) >> +endobj +508 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +509 0 obj +<< /S /GoTo /D (subsection.12.22) >> +endobj +512 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000r\000o\000a) +endobj +513 0 obj +<< /S /GoTo /D (subsubsection.12.22.1) >> +endobj +516 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +517 0 obj +<< /S /GoTo /D (subsection.12.23) >> +endobj +520 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000r\000p\000k\000i\000\137\000e\000n\000g\000i\000n\000e) +endobj +521 0 obj +<< /S /GoTo /D (subsubsection.12.23.1) >> +endobj +524 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +525 0 obj +<< /S /GoTo /D (subsection.12.24) >> +endobj +528 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000s\000q\000l) +endobj +529 0 obj +<< /S /GoTo /D (subsubsection.12.24.1) >> +endobj +532 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +533 0 obj +<< /S /GoTo /D (subsection.12.25) >> +endobj +536 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000s\000u\000n\000d\000i\000a\000l) +endobj +537 0 obj +<< /S /GoTo /D (subsubsection.12.25.1) >> +endobj +540 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +541 0 obj +<< /S /GoTo /D (subsubsection.12.25.2) >> +endobj +544 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +545 0 obj +<< /S /GoTo /D (subsection.12.26) >> +endobj +548 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000u\000p\000\137\000d\000o\000w\000n) +endobj +549 0 obj +<< /S /GoTo /D (subsubsection.12.26.1) >> +endobj +552 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +553 0 obj +<< /S /GoTo /D (subsubsection.12.26.2) >> +endobj +556 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +557 0 obj +<< /S /GoTo /D (subsection.12.27) >> +endobj +560 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000x\0005\0000\0009) +endobj +561 0 obj +<< /S /GoTo /D (subsubsection.12.27.1) >> +endobj +564 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +565 0 obj +<< /S /GoTo /D (subsubsection.12.27.2) >> +endobj +568 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +569 0 obj +<< /S /GoTo /D (subsection.12.28) >> +endobj +572 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000.\000x\000m\000l\000\137\000u\000t\000i\000l\000s) +endobj +573 0 obj +<< /S /GoTo /D (subsubsection.12.28.1) >> +endobj +576 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +577 0 obj +<< /S /GoTo /D (subsection.12.29) >> +endobj +580 0 obj +(\376\377\000P\000a\000c\000k\000a\000g\000e\000\040\000r\000p\000k\000i\000d) +endobj +581 0 obj +<< /S /GoTo /D (subsubsection.12.29.1) >> +endobj +584 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +585 0 obj +<< /S /GoTo /D (subsubsection.12.29.2) >> +endobj +588 0 obj +(\376\377\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +589 0 obj +<< /S /GoTo /D (subsubsection.12.29.3) >> +endobj +592 0 obj +(\376\377\000V\000a\000r\000i\000a\000b\000l\000e\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +593 0 obj +<< /S /GoTo /D (section.13) >> +endobj +596 0 obj +(\376\377\000C\000l\000a\000s\000s\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +597 0 obj +<< /S /GoTo /D (subsection.13.1) >> +endobj +600 0 obj +(\376\377\000a\000s\000y\000n\000c\000\137\000c\000h\000a\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +601 0 obj +<< /S /GoTo /D (subsection.13.2) >> +endobj +604 0 obj +(\376\377\000d\000i\000s\000p\000a\000t\000c\000h\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +605 0 obj +<< /S /GoTo /D (subsection.13.3) >> +endobj +608 0 obj +(\376\377\000C\000m\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +609 0 obj +<< /S /GoTo /D (subsection.13.4) >> +endobj +612 0 obj +(\376\377\000d\000i\000c\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +613 0 obj +<< /S /GoTo /D (subsection.13.5) >> +endobj +616 0 obj +(\376\377\000E\000x\000c\000e\000p\000t\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +617 0 obj +<< /S /GoTo /D (subsection.13.6) >> +endobj +620 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000b\000s\000c\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +621 0 obj +<< /S /GoTo /D (subsubsection.13.6.1) >> +endobj +624 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +625 0 obj +<< /S /GoTo /D (subsubsection.13.6.2) >> +endobj +628 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +629 0 obj +<< /S /GoTo /D (subsubsection.13.6.3) >> +endobj +632 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +633 0 obj +<< /S /GoTo /D (subsection.13.7) >> +endobj +636 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000e\000r\000t\000i\000f\000i\000c\000a\000t\000e\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +637 0 obj +<< /S /GoTo /D (subsubsection.13.7.1) >> +endobj +640 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +641 0 obj +<< /S /GoTo /D (subsection.13.8) >> +endobj +644 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000h\000i\000l\000d\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +645 0 obj +<< /S /GoTo /D (subsubsection.13.8.1) >> +endobj +648 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +649 0 obj +<< /S /GoTo /D (subsection.13.9) >> +endobj +652 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000l\000i\000e\000n\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +653 0 obj +<< /S /GoTo /D (subsubsection.13.9.1) >> +endobj +656 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +657 0 obj +<< /S /GoTo /D (subsection.13.10) >> +endobj +660 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000m\000d\000\137\000e\000l\000t\000\137\000m\000i\000x\000i\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +661 0 obj +<< /S /GoTo /D (subsubsection.13.10.1) >> +endobj +664 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +665 0 obj +<< /S /GoTo /D (subsubsection.13.10.2) >> +endobj +668 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +669 0 obj +<< /S /GoTo /D (subsubsection.13.10.3) >> +endobj +672 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +673 0 obj +<< /S /GoTo /D (subsection.13.11) >> +endobj +676 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000m\000d\000\137\000m\000s\000g\000\137\000m\000i\000x\000i\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +677 0 obj +<< /S /GoTo /D (subsubsection.13.11.1) >> +endobj +680 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +681 0 obj +<< /S /GoTo /D (subsubsection.13.11.2) >> +endobj +684 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +685 0 obj +<< /S /GoTo /D (subsection.13.12) >> +endobj +688 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000o\000n\000f\000i\000g\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +689 0 obj +<< /S /GoTo /D (subsubsection.13.12.1) >> +endobj +692 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +693 0 obj +<< /S /GoTo /D (subsubsection.13.12.2) >> +endobj +696 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +697 0 obj +<< /S /GoTo /D (subsubsection.13.12.3) >> +endobj +700 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +701 0 obj +<< /S /GoTo /D (subsection.13.13) >> +endobj +704 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000c\000r\000l\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +705 0 obj +<< /S /GoTo /D (subsubsection.13.13.1) >> +endobj +708 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +709 0 obj +<< /S /GoTo /D (subsection.13.14) >> +endobj +712 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000\137\000c\000m\000s\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +713 0 obj +<< /S /GoTo /D (subsubsection.13.14.1) >> +endobj +716 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +717 0 obj +<< /S /GoTo /D (subsubsection.13.14.2) >> +endobj +720 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +721 0 obj +<< /S /GoTo /D (subsection.13.15) >> +endobj +724 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +725 0 obj +<< /S /GoTo /D (subsubsection.13.15.1) >> +endobj +728 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +729 0 obj +<< /S /GoTo /D (subsubsection.13.15.2) >> +endobj +732 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +733 0 obj +<< /S /GoTo /D (subsection.13.16) >> +endobj +736 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000\137\000p\000r\000o\000t\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +737 0 obj +<< /S /GoTo /D (subsubsection.13.16.1) >> +endobj +740 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +741 0 obj +<< /S /GoTo /D (subsubsection.13.16.2) >> +endobj +744 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +745 0 obj +<< /S /GoTo /D (subsection.13.17) >> +endobj +748 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000\137\000s\000a\000x\000\137\000h\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +749 0 obj +<< /S /GoTo /D (subsubsection.13.17.1) >> +endobj +752 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +753 0 obj +<< /S /GoTo /D (subsubsection.13.17.2) >> +endobj +756 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +757 0 obj +<< /S /GoTo /D (subsection.13.18) >> +endobj +760 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000i\000s\000t\000\137\000p\000u\000b\000l\000i\000s\000h\000e\000d\000\137\000o\000b\000j\000e\000c\000t\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +761 0 obj +<< /S /GoTo /D (subsubsection.13.18.1) >> +endobj +764 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +765 0 obj +<< /S /GoTo /D (subsubsection.13.18.2) >> +endobj +768 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +769 0 obj +<< /S /GoTo /D (subsection.13.19) >> +endobj +772 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000l\000i\000s\000t\000\137\000r\000e\000c\000e\000i\000v\000e\000d\000\137\000r\000e\000s\000o\000u\000r\000c\000e\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +773 0 obj +<< /S /GoTo /D (subsubsection.13.19.1) >> +endobj +776 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +777 0 obj +<< /S /GoTo /D (subsubsection.13.19.2) >> +endobj +780 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +781 0 obj +<< /S /GoTo /D (subsection.13.20) >> +endobj +784 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000m\000a\000n\000i\000f\000e\000s\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +785 0 obj +<< /S /GoTo /D (subsubsection.13.20.1) >> +endobj +788 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +789 0 obj +<< /S /GoTo /D (subsection.13.21) >> +endobj +792 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000p\000a\000r\000e\000n\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +793 0 obj +<< /S /GoTo /D (subsubsection.13.21.1) >> +endobj +796 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +797 0 obj +<< /S /GoTo /D (subsection.13.22) >> +endobj +800 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000c\000m\000s\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +801 0 obj +<< /S /GoTo /D (subsubsection.13.22.1) >> +endobj +804 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +805 0 obj +<< /S /GoTo /D (subsubsection.13.22.2) >> +endobj +808 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +809 0 obj +<< /S /GoTo /D (subsection.13.23) >> +endobj +812 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +813 0 obj +<< /S /GoTo /D (subsubsection.13.23.1) >> +endobj +816 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +817 0 obj +<< /S /GoTo /D (subsubsection.13.23.2) >> +endobj +820 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +821 0 obj +<< /S /GoTo /D (subsection.13.24) >> +endobj +824 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000p\000r\000o\000t\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +825 0 obj +<< /S /GoTo /D (subsubsection.13.24.1) >> +endobj +828 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +829 0 obj +<< /S /GoTo /D (subsubsection.13.24.2) >> +endobj +832 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +833 0 obj +<< /S /GoTo /D (subsection.13.25) >> +endobj +836 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000s\000a\000x\000\137\000h\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +837 0 obj +<< /S /GoTo /D (subsubsection.13.25.1) >> +endobj +840 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +841 0 obj +<< /S /GoTo /D (subsubsection.13.25.2) >> +endobj +844 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +845 0 obj +<< /S /GoTo /D (subsection.13.26) >> +endobj +848 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000r\000e\000p\000l\000y\000\137\000e\000l\000t\000\137\000m\000i\000x\000i\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +849 0 obj +<< /S /GoTo /D (subsubsection.13.26.1) >> +endobj +852 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +853 0 obj +<< /S /GoTo /D (subsubsection.13.26.2) >> +endobj +856 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +857 0 obj +<< /S /GoTo /D (subsubsection.13.26.3) >> +endobj +860 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +861 0 obj +<< /S /GoTo /D (subsection.13.27) >> +endobj +864 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000r\000e\000p\000o\000r\000t\000\137\000e\000r\000r\000o\000r\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +865 0 obj +<< /S /GoTo /D (subsubsection.13.27.1) >> +endobj +868 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +869 0 obj +<< /S /GoTo /D (subsection.13.28) >> +endobj +872 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000r\000e\000p\000o\000s\000i\000t\000o\000r\000y\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +873 0 obj +<< /S /GoTo /D (subsubsection.13.28.1) >> +endobj +876 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +877 0 obj +<< /S /GoTo /D (subsection.13.29) >> +endobj +880 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000r\000o\000a\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +881 0 obj +<< /S /GoTo /D (subsubsection.13.29.1) >> +endobj +884 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +885 0 obj +<< /S /GoTo /D (subsection.13.30) >> +endobj +888 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000s\000e\000l\000f\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +889 0 obj +<< /S /GoTo /D (subsubsection.13.30.1) >> +endobj +892 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +893 0 obj +<< /S /GoTo /D (subsection.13.31) >> +endobj +896 0 obj +(\376\377\000i\000r\000b\000e\000\137\000c\000l\000i\000.\000U\000s\000a\000g\000e\000W\000r\000a\000p\000p\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +897 0 obj +<< /S /GoTo /D (subsubsection.13.31.1) >> +endobj +900 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +901 0 obj +<< /S /GoTo /D (subsubsection.13.31.2) >> +endobj +904 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +905 0 obj +<< /S /GoTo /D (subsection.13.32) >> +endobj +908 0 obj +(\376\377\000l\000o\000n\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +909 0 obj +<< /S /GoTo /D (subsection.13.33) >> +endobj +912 0 obj +(\376\377\000o\000b\000j\000e\000c\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +913 0 obj +<< /S /GoTo /D (subsection.13.34) >> +endobj +916 0 obj +(\376\377\000p\000u\000b\000d\000.\000p\000u\000b\000d\000\137\000c\000o\000n\000t\000e\000x\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +917 0 obj +<< /S /GoTo /D (subsubsection.13.34.1) >> +endobj +920 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +921 0 obj +<< /S /GoTo /D (subsubsection.13.34.2) >> +endobj +924 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +925 0 obj +<< /S /GoTo /D (subsubsection.13.34.3) >> +endobj +928 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +929 0 obj +<< /S /GoTo /D (subsection.13.35) >> +endobj +932 0 obj +(\376\377\000d\000a\000t\000e\000t\000i\000m\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +933 0 obj +<< /S /GoTo /D (subsection.13.36) >> +endobj +936 0 obj +(\376\377\000t\000i\000m\000e\000d\000e\000l\000t\000a\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +937 0 obj +<< /S /GoTo /D (subsection.13.37) >> +endobj +940 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000c\000m\000s\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +941 0 obj +<< /S /GoTo /D (subsubsection.13.37.1) >> +endobj +944 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +945 0 obj +<< /S /GoTo /D (subsubsection.13.37.2) >> +endobj +948 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +949 0 obj +<< /S /GoTo /D (subsection.13.38) >> +endobj +952 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000i\000s\000s\000u\000e\000\137\000p\000d\000u\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +953 0 obj +<< /S /GoTo /D (subsubsection.13.38.1) >> +endobj +956 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +957 0 obj +<< /S /GoTo /D (subsubsection.13.38.2) >> +endobj +960 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +961 0 obj +<< /S /GoTo /D (subsection.13.39) >> +endobj +964 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000l\000i\000s\000t\000\137\000p\000d\000u\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +965 0 obj +<< /S /GoTo /D (subsubsection.13.39.1) >> +endobj +968 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +969 0 obj +<< /S /GoTo /D (subsubsection.13.39.2) >> +endobj +972 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +973 0 obj +<< /S /GoTo /D (subsection.13.40) >> +endobj +976 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000m\000e\000s\000s\000a\000g\000e\000\137\000p\000d\000u\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +977 0 obj +<< /S /GoTo /D (subsubsection.13.40.1) >> +endobj +980 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +981 0 obj +<< /S /GoTo /D (subsubsection.13.40.2) >> +endobj +984 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +985 0 obj +<< /S /GoTo /D (subsubsection.13.40.3) >> +endobj +988 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +989 0 obj +<< /S /GoTo /D (subsection.13.41) >> +endobj +992 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000r\000e\000v\000o\000k\000e\000\137\000p\000d\000u\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +993 0 obj +<< /S /GoTo /D (subsubsection.13.41.1) >> +endobj +996 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +997 0 obj +<< /S /GoTo /D (subsubsection.13.41.2) >> +endobj +1000 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1001 0 obj +<< /S /GoTo /D (subsection.13.42) >> +endobj +1004 0 obj +(\376\377\000r\000o\000o\000t\000d\000.\000s\000a\000x\000\137\000h\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1005 0 obj +<< /S /GoTo /D (subsubsection.13.42.1) >> +endobj +1008 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1009 0 obj +<< /S /GoTo /D (subsubsection.13.42.2) >> +endobj +1012 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1013 0 obj +<< /S /GoTo /D (subsection.13.43) >> +endobj +1016 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000d\000n\000s\000.\000d\000i\000s\000p\000a\000t\000c\000h\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1017 0 obj +<< /S /GoTo /D (subsubsection.13.43.1) >> +endobj +1020 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1021 0 obj +<< /S /GoTo /D (subsubsection.13.43.2) >> +endobj +1024 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1025 0 obj +<< /S /GoTo /D (subsubsection.13.43.3) >> +endobj +1028 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1029 0 obj +<< /S /GoTo /D (subsection.13.44) >> +endobj +1032 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000d\000n\000s\000.\000g\000e\000t\000a\000d\000d\000r\000i\000n\000f\000o\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1033 0 obj +<< /S /GoTo /D (subsubsection.13.44.1) >> +endobj +1036 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1037 0 obj +<< /S /GoTo /D (subsubsection.13.44.2) >> +endobj +1040 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1041 0 obj +<< /S /GoTo /D (subsubsection.13.44.3) >> +endobj +1044 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1045 0 obj +<< /S /GoTo /D (subsection.13.45) >> +endobj +1048 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000d\000n\000s\000.\000q\000u\000e\000r\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1049 0 obj +<< /S /GoTo /D (subsubsection.13.45.1) >> +endobj +1052 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1053 0 obj +<< /S /GoTo /D (subsubsection.13.45.2) >> +endobj +1056 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1057 0 obj +<< /S /GoTo /D (subsubsection.13.45.3) >> +endobj +1060 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1061 0 obj +<< /S /GoTo /D (subsection.13.46) >> +endobj +1064 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000s\000y\000n\000c\000.\000g\000c\000\137\000s\000u\000m\000m\000a\000r\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1065 0 obj +<< /S /GoTo /D (subsubsection.13.46.1) >> +endobj +1068 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1069 0 obj +<< /S /GoTo /D (subsubsection.13.46.2) >> +endobj +1072 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1073 0 obj +<< /S /GoTo /D (subsubsection.13.46.3) >> +endobj +1076 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1077 0 obj +<< /S /GoTo /D (subsection.13.47) >> +endobj +1080 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000s\000y\000n\000c\000.\000i\000t\000e\000r\000a\000t\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1081 0 obj +<< /S /GoTo /D (subsubsection.13.47.1) >> +endobj +1084 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1085 0 obj +<< /S /GoTo /D (subsubsection.13.47.2) >> +endobj +1088 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1089 0 obj +<< /S /GoTo /D (subsubsection.13.47.3) >> +endobj +1092 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1093 0 obj +<< /S /GoTo /D (subsection.13.48) >> +endobj +1096 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000s\000y\000n\000c\000.\000s\000y\000n\000c\000\137\000w\000r\000a\000p\000p\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1097 0 obj +<< /S /GoTo /D (subsubsection.13.48.1) >> +endobj +1100 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1101 0 obj +<< /S /GoTo /D (subsubsection.13.48.2) >> +endobj +1104 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1105 0 obj +<< /S /GoTo /D (subsubsection.13.48.3) >> +endobj +1108 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1109 0 obj +<< /S /GoTo /D (subsection.13.49) >> +endobj +1112 0 obj +(\376\377\000r\000p\000k\000i\000.\000a\000s\000y\000n\000c\000.\000t\000i\000m\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1113 0 obj +<< /S /GoTo /D (subsubsection.13.49.1) >> +endobj +1116 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1117 0 obj +<< /S /GoTo /D (subsubsection.13.49.2) >> +endobj +1120 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1121 0 obj +<< /S /GoTo /D (subsubsection.13.49.3) >> +endobj +1124 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1125 0 obj +<< /S /GoTo /D (subsection.13.50) >> +endobj +1128 0 obj +(\376\377\000r\000p\000k\000i\000.\000c\000l\000i\000.\000C\000m\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1129 0 obj +<< /S /GoTo /D (subsubsection.13.50.1) >> +endobj +1132 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1133 0 obj +<< /S /GoTo /D (subsubsection.13.50.2) >> +endobj +1136 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1137 0 obj +<< /S /GoTo /D (subsubsection.13.50.3) >> +endobj +1140 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1141 0 obj +<< /S /GoTo /D (subsection.13.51) >> +endobj +1144 0 obj +(\376\377\000r\000p\000k\000i\000.\000c\000o\000n\000f\000i\000g\000.\000p\000a\000r\000s\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1145 0 obj +<< /S /GoTo /D (subsubsection.13.51.1) >> +endobj +1148 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1149 0 obj +<< /S /GoTo /D (subsubsection.13.51.2) >> +endobj +1152 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1153 0 obj +<< /S /GoTo /D (subsubsection.13.51.3) >> +endobj +1156 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1157 0 obj +<< /S /GoTo /D (subsection.13.52) >> +endobj +1160 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000C\000l\000a\000s\000s\000N\000a\000m\000e\000S\000y\000n\000t\000a\000x\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1161 0 obj +<< /S /GoTo /D (subsubsection.13.52.1) >> +endobj +1164 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1165 0 obj +<< /S /GoTo /D (subsection.13.53) >> +endobj +1168 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000C\000l\000i\000e\000n\000t\000U\000R\000L\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1169 0 obj +<< /S /GoTo /D (subsubsection.13.53.1) >> +endobj +1172 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1173 0 obj +<< /S /GoTo /D (subsection.13.54) >> +endobj +1176 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000C\000o\000n\000t\000a\000c\000t\000U\000R\000L\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1177 0 obj +<< /S /GoTo /D (subsubsection.13.54.1) >> +endobj +1180 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1181 0 obj +<< /S /GoTo /D (subsection.13.55) >> +endobj +1184 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000E\000x\000t\000e\000n\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1185 0 obj +<< /S /GoTo /D (subsubsection.13.55.1) >> +endobj +1188 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1189 0 obj +<< /S /GoTo /D (subsection.13.56) >> +endobj +1192 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000I\000P\000R\000e\000s\000o\000u\000r\000c\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1193 0 obj +<< /S /GoTo /D (subsubsection.13.56.1) >> +endobj +1196 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1197 0 obj +<< /S /GoTo /D (subsection.13.57) >> +endobj +1200 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000I\000R\000D\000B\000R\000e\000p\000l\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1201 0 obj +<< /S /GoTo /D (subsubsection.13.57.1) >> +endobj +1204 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1205 0 obj +<< /S /GoTo /D (subsection.13.58) >> +endobj +1208 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000I\000s\000s\000u\000e\000R\000e\000s\000p\000o\000n\000s\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1209 0 obj +<< /S /GoTo /D (subsubsection.13.58.1) >> +endobj +1212 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1213 0 obj +<< /S /GoTo /D (subsection.13.59) >> +endobj +1216 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000P\000K\000C\000S\0001\0000\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1217 0 obj +<< /S /GoTo /D (subsubsection.13.59.1) >> +endobj +1220 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1221 0 obj +<< /S /GoTo /D (subsection.13.60) >> +endobj +1224 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000P\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000R\000e\000p\000l\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1225 0 obj +<< /S /GoTo /D (subsubsection.13.60.1) >> +endobj +1228 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1229 0 obj +<< /S /GoTo /D (subsection.13.61) >> +endobj +1232 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000Q\000u\000e\000r\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1233 0 obj +<< /S /GoTo /D (subsubsection.13.61.1) >> +endobj +1236 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1237 0 obj +<< /S /GoTo /D (subsection.13.62) >> +endobj +1240 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000R\000O\000A\000P\000r\000e\000f\000i\000x\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1241 0 obj +<< /S /GoTo /D (subsubsection.13.62.1) >> +endobj +1244 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1245 0 obj +<< /S /GoTo /D (subsection.13.63) >> +endobj +1248 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000S\000e\000n\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1249 0 obj +<< /S /GoTo /D (subsubsection.13.63.1) >> +endobj +1252 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1253 0 obj +<< /S /GoTo /D (subsection.13.64) >> +endobj +1256 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000S\000t\000a\000t\000u\000s\000C\000o\000d\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1257 0 obj +<< /S /GoTo /D (subsubsection.13.64.1) >> +endobj +1260 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1261 0 obj +<< /S /GoTo /D (subsection.13.65) >> +endobj +1264 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000a\000d\000U\000R\000I\000S\000y\000n\000t\000a\000x\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1265 0 obj +<< /S /GoTo /D (subsubsection.13.65.1) >> +endobj +1268 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1269 0 obj +<< /S /GoTo /D (subsection.13.66) >> +endobj +1272 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000S\000C\000N\000o\000t\000F\000o\000u\000n\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1273 0 obj +<< /S /GoTo /D (subsubsection.13.66.1) >> +endobj +1276 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1277 0 obj +<< /S /GoTo /D (subsection.13.67) >> +endobj +1280 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000B\000S\000C\000N\000o\000t\000R\000e\000a\000d\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1281 0 obj +<< /S /GoTo /D (subsubsection.13.67.1) >> +endobj +1284 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1285 0 obj +<< /S /GoTo /D (subsection.13.68) >> +endobj +1288 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000h\000i\000l\000d\000N\000o\000t\000F\000o\000u\000n\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1289 0 obj +<< /S /GoTo /D (subsubsection.13.68.1) >> +endobj +1292 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1293 0 obj +<< /S /GoTo /D (subsection.13.69) >> +endobj +1296 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000l\000a\000s\000s\000N\000a\000m\000e\000M\000i\000s\000m\000a\000t\000c\000h\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1297 0 obj +<< /S /GoTo /D (subsubsection.13.69.1) >> +endobj +1300 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1301 0 obj +<< /S /GoTo /D (subsection.13.70) >> +endobj +1304 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000l\000a\000s\000s\000N\000a\000m\000e\000U\000n\000k\000n\000o\000w\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1305 0 obj +<< /S /GoTo /D (subsubsection.13.70.1) >> +endobj +1308 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1309 0 obj +<< /S /GoTo /D (subsection.13.71) >> +endobj +1312 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000l\000i\000e\000n\000t\000N\000o\000t\000F\000o\000u\000n\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1313 0 obj +<< /S /GoTo /D (subsubsection.13.71.1) >> +endobj +1316 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1317 0 obj +<< /S /GoTo /D (subsection.13.72) >> +endobj +1320 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000M\000S\000C\000o\000n\000t\000e\000n\000t\000N\000o\000t\000S\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1321 0 obj +<< /S /GoTo /D (subsubsection.13.72.1) >> +endobj +1324 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1325 0 obj +<< /S /GoTo /D (subsection.13.73) >> +endobj +1328 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000M\000S\000C\000R\000L\000N\000o\000t\000S\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1329 0 obj +<< /S /GoTo /D (subsubsection.13.73.1) >> +endobj +1332 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1333 0 obj +<< /S /GoTo /D (subsection.13.74) >> +endobj +1336 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000M\000S\000V\000e\000r\000i\000f\000i\000c\000a\000t\000i\000o\000n\000F\000a\000i\000l\000e\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1337 0 obj +<< /S /GoTo /D (subsubsection.13.74.1) >> +endobj +1340 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1341 0 obj +<< /S /GoTo /D (subsection.13.75) >> +endobj +1344 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000C\000o\000m\000m\000a\000n\000d\000P\000a\000r\000s\000e\000F\000a\000i\000l\000u\000r\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1345 0 obj +<< /S /GoTo /D (subsubsection.13.75.1) >> +endobj +1348 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1349 0 obj +<< /S /GoTo /D (subsection.13.76) >> +endobj +1352 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000D\000B\000C\000o\000n\000s\000i\000s\000t\000a\000n\000c\000y\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1353 0 obj +<< /S /GoTo /D (subsubsection.13.76.1) >> +endobj +1356 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1357 0 obj +<< /S /GoTo /D (subsection.13.77) >> +endobj +1360 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000D\000E\000R\000O\000b\000j\000e\000c\000t\000C\000o\000n\000v\000e\000r\000s\000i\000o\000n\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1361 0 obj +<< /S /GoTo /D (subsubsection.13.77.1) >> +endobj +1364 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1365 0 obj +<< /S /GoTo /D (subsection.13.78) >> +endobj +1368 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000D\000u\000p\000l\000i\000c\000a\000t\000e\000O\000b\000j\000e\000c\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1369 0 obj +<< /S /GoTo /D (subsubsection.13.78.1) >> +endobj +1372 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1373 0 obj +<< /S /GoTo /D (subsection.13.79) >> +endobj +1376 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000E\000m\000p\000t\000y\000P\000E\000M\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1377 0 obj +<< /S /GoTo /D (subsubsection.13.79.1) >> +endobj +1380 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1381 0 obj +<< /S /GoTo /D (subsection.13.80) >> +endobj +1384 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000E\000m\000p\000t\000y\000R\000O\000A\000P\000r\000e\000f\000i\000x\000L\000i\000s\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1385 0 obj +<< /S /GoTo /D (subsubsection.13.80.1) >> +endobj +1388 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1389 0 obj +<< /S /GoTo /D (subsection.13.81) >> +endobj +1392 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000F\000o\000r\000b\000i\000d\000d\000e\000n\000U\000R\000I\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1393 0 obj +<< /S /GoTo /D (subsubsection.13.81.1) >> +endobj +1396 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1397 0 obj +<< /S /GoTo /D (subsection.13.82) >> +endobj +1400 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000a\000n\000d\000l\000e\000T\000r\000a\000n\000s\000l\000a\000t\000i\000o\000n\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1401 0 obj +<< /S /GoTo /D (subsubsection.13.82.1) >> +endobj +1404 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1405 0 obj +<< /S /GoTo /D (subsection.13.83) >> +endobj +1408 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000T\000T\000P\000R\000e\000q\000u\000e\000s\000t\000F\000a\000i\000l\000e\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1409 0 obj +<< /S /GoTo /D (subsubsection.13.83.1) >> +endobj +1412 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1413 0 obj +<< /S /GoTo /D (subsection.13.84) >> +endobj +1416 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000T\000T\000P\000S\000B\000a\000d\000V\000e\000r\000s\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1417 0 obj +<< /S /GoTo /D (subsubsection.13.84.1) >> +endobj +1420 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1421 0 obj +<< /S /GoTo /D (subsection.13.85) >> +endobj +1424 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000T\000T\000P\000S\000C\000l\000i\000e\000n\000t\000A\000b\000o\000r\000t\000e\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1425 0 obj +<< /S /GoTo /D (subsubsection.13.85.1) >> +endobj +1428 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1429 0 obj +<< /S /GoTo /D (subsection.13.86) >> +endobj +1432 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000T\000T\000P\000S\000U\000n\000e\000x\000p\000e\000c\000t\000e\000d\000S\000t\000a\000t\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1433 0 obj +<< /S /GoTo /D (subsubsection.13.86.1) >> +endobj +1436 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1437 0 obj +<< /S /GoTo /D (subsection.13.87) >> +endobj +1440 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000H\000T\000T\000P\000T\000i\000m\000e\000o\000u\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1441 0 obj +<< /S /GoTo /D (subsubsection.13.87.1) >> +endobj +1444 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1445 0 obj +<< /S /GoTo /D (subsection.13.88) >> +endobj +1448 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000M\000i\000s\000s\000i\000n\000g\000C\000M\000S\000C\000R\000L\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1449 0 obj +<< /S /GoTo /D (subsubsection.13.88.1) >> +endobj +1452 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1453 0 obj +<< /S /GoTo /D (subsection.13.89) >> +endobj +1456 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000M\000i\000s\000s\000i\000n\000g\000C\000M\000S\000E\000E\000c\000e\000r\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1457 0 obj +<< /S /GoTo /D (subsubsection.13.89.1) >> +endobj +1460 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1461 0 obj +<< /S /GoTo /D (subsection.13.90) >> +endobj +1464 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000M\000u\000l\000t\000i\000p\000l\000e\000T\000L\000S\000E\000E\000C\000e\000r\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1465 0 obj +<< /S /GoTo /D (subsubsection.13.90.1) >> +endobj +1468 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1469 0 obj +<< /S /GoTo /D (subsection.13.91) >> +endobj +1472 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000M\000u\000s\000t\000B\000e\000P\000r\000e\000f\000i\000x\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1473 0 obj +<< /S /GoTo /D (subsubsection.13.91.1) >> +endobj +1476 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1477 0 obj +<< /S /GoTo /D (subsection.13.92) >> +endobj +1480 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000A\000c\000t\000i\000v\000e\000C\000A\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1481 0 obj +<< /S /GoTo /D (subsubsection.13.92.1) >> +endobj +1484 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1485 0 obj +<< /S /GoTo /D (subsection.13.93) >> +endobj +1488 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000C\000o\000v\000e\000r\000i\000n\000g\000C\000e\000r\000t\000F\000o\000r\000R\000O\000A\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1489 0 obj +<< /S /GoTo /D (subsubsection.13.93.1) >> +endobj +1492 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1493 0 obj +<< /S /GoTo /D (subsection.13.94) >> +endobj +1496 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000O\000b\000j\000e\000c\000t\000A\000t\000U\000R\000I\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1497 0 obj +<< /S /GoTo /D (subsubsection.13.94.1) >> +endobj +1500 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1501 0 obj +<< /S /GoTo /D (subsection.13.95) >> +endobj +1504 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000t\000A\000C\000e\000r\000t\000i\000f\000i\000c\000a\000t\000e\000C\000h\000a\000i\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1505 0 obj +<< /S /GoTo /D (subsubsection.13.95.1) >> +endobj +1508 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1509 0 obj +<< /S /GoTo /D (subsection.13.96) >> +endobj +1512 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000t\000F\000o\000u\000n\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1513 0 obj +<< /S /GoTo /D (subsubsection.13.96.1) >> +endobj +1516 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1517 0 obj +<< /S /GoTo /D (subsection.13.97) >> +endobj +1520 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000t\000I\000m\000p\000l\000e\000m\000e\000n\000t\000e\000d\000Y\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1521 0 obj +<< /S /GoTo /D (subsubsection.13.97.1) >> +endobj +1524 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1525 0 obj +<< /S /GoTo /D (subsection.13.98) >> +endobj +1528 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000N\000o\000t\000I\000n\000D\000a\000t\000a\000b\000a\000s\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1529 0 obj +<< /S /GoTo /D (subsubsection.13.98.1) >> +endobj +1532 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1533 0 obj +<< /S /GoTo /D (subsection.13.99) >> +endobj +1536 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000R\000e\000c\000e\000i\000v\000e\000d\000T\000L\000S\000C\000A\000C\000e\000r\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1537 0 obj +<< /S /GoTo /D (subsubsection.13.99.1) >> +endobj +1540 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1541 0 obj +<< /S /GoTo /D (subsection.13.100) >> +endobj +1544 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000R\000P\000K\000I\000\137\000E\000x\000c\000e\000p\000t\000i\000o\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1545 0 obj +<< /S /GoTo /D (subsubsection.13.100.1) >> +endobj +1548 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1549 0 obj +<< /S /GoTo /D (subsection.13.101) >> +endobj +1552 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000S\000e\000r\000v\000e\000r\000S\000h\000u\000t\000t\000i\000n\000g\000D\000o\000w\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1553 0 obj +<< /S /GoTo /D (subsubsection.13.101.1) >> +endobj +1556 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1557 0 obj +<< /S /GoTo /D (subsection.13.102) >> +endobj +1560 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000S\000K\000I\000M\000i\000s\000m\000a\000t\000c\000h\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1561 0 obj +<< /S /GoTo /D (subsubsection.13.102.1) >> +endobj +1564 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1565 0 obj +<< /S /GoTo /D (subsection.13.103) >> +endobj +1568 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000S\000u\000b\000p\000r\000o\000c\000e\000s\000s\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1569 0 obj +<< /S /GoTo /D (subsubsection.13.103.1) >> +endobj +1572 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1573 0 obj +<< /S /GoTo /D (subsection.13.104) >> +endobj +1576 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000T\000L\000S\000V\000a\000l\000i\000d\000a\000t\000i\000o\000n\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1577 0 obj +<< /S /GoTo /D (subsubsection.13.104.1) >> +endobj +1580 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1581 0 obj +<< /S /GoTo /D (subsection.13.105) >> +endobj +1584 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000U\000n\000e\000x\000p\000e\000c\000t\000e\000d\000C\000M\000S\000C\000e\000r\000t\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1585 0 obj +<< /S /GoTo /D (subsubsection.13.105.1) >> +endobj +1588 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1589 0 obj +<< /S /GoTo /D (subsection.13.106) >> +endobj +1592 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000U\000n\000e\000x\000p\000e\000c\000t\000e\000d\000C\000M\000S\000C\000R\000L\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1593 0 obj +<< /S /GoTo /D (subsubsection.13.106.1) >> +endobj +1596 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1597 0 obj +<< /S /GoTo /D (subsection.13.107) >> +endobj +1600 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000U\000n\000p\000a\000r\000s\000a\000b\000l\000e\000C\000M\000S\000D\000E\000R\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1601 0 obj +<< /S /GoTo /D (subsubsection.13.107.1) >> +endobj +1604 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1605 0 obj +<< /S /GoTo /D (subsection.13.108) >> +endobj +1608 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000U\000p\000s\000t\000r\000e\000a\000m\000E\000r\000r\000o\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1609 0 obj +<< /S /GoTo /D (subsubsection.13.108.1) >> +endobj +1612 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1613 0 obj +<< /S /GoTo /D (subsection.13.109) >> +endobj +1616 0 obj +(\376\377\000r\000p\000k\000i\000.\000e\000x\000c\000e\000p\000t\000i\000o\000n\000s\000.\000W\000r\000o\000n\000g\000E\000C\000o\000n\000t\000e\000n\000t\000T\000y\000p\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1617 0 obj +<< /S /GoTo /D (subsubsection.13.109.1) >> +endobj +1620 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1621 0 obj +<< /S /GoTo /D (subsection.13.110) >> +endobj +1624 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000c\000a\000l\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1625 0 obj +<< /S /GoTo /D (subsubsection.13.110.1) >> +endobj +1628 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1629 0 obj +<< /S /GoTo /D (subsubsection.13.110.2) >> +endobj +1632 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1633 0 obj +<< /S /GoTo /D (subsubsection.13.110.3) >> +endobj +1636 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1637 0 obj +<< /S /GoTo /D (subsection.13.111) >> +endobj +1640 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000c\000l\000i\000e\000n\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1641 0 obj +<< /S /GoTo /D (subsubsection.13.111.1) >> +endobj +1644 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1645 0 obj +<< /S /GoTo /D (subsubsection.13.111.2) >> +endobj +1648 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1649 0 obj +<< /S /GoTo /D (subsubsection.13.111.3) >> +endobj +1652 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1653 0 obj +<< /S /GoTo /D (subsection.13.112) >> +endobj +1656 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000l\000i\000s\000t\000e\000n\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1657 0 obj +<< /S /GoTo /D (subsubsection.13.112.1) >> +endobj +1660 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1661 0 obj +<< /S /GoTo /D (subsubsection.13.112.2) >> +endobj +1664 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1665 0 obj +<< /S /GoTo /D (subsubsection.13.112.3) >> +endobj +1668 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1669 0 obj +<< /S /GoTo /D (subsection.13.113) >> +endobj +1672 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000m\000e\000s\000s\000a\000g\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1673 0 obj +<< /S /GoTo /D (subsubsection.13.113.1) >> +endobj +1676 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1677 0 obj +<< /S /GoTo /D (subsubsection.13.113.2) >> +endobj +1680 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1681 0 obj +<< /S /GoTo /D (subsubsection.13.113.3) >> +endobj +1684 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1685 0 obj +<< /S /GoTo /D (subsection.13.114) >> +endobj +1688 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000q\000u\000e\000u\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1689 0 obj +<< /S /GoTo /D (subsubsection.13.114.1) >> +endobj +1692 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1693 0 obj +<< /S /GoTo /D (subsubsection.13.114.2) >> +endobj +1696 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1697 0 obj +<< /S /GoTo /D (subsubsection.13.114.3) >> +endobj +1700 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1701 0 obj +<< /S /GoTo /D (subsection.13.115) >> +endobj +1704 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000r\000e\000q\000u\000e\000s\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1705 0 obj +<< /S /GoTo /D (subsubsection.13.115.1) >> +endobj +1708 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1709 0 obj +<< /S /GoTo /D (subsubsection.13.115.2) >> +endobj +1712 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1713 0 obj +<< /S /GoTo /D (subsubsection.13.115.3) >> +endobj +1716 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1717 0 obj +<< /S /GoTo /D (subsection.13.116) >> +endobj +1720 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000r\000e\000s\000p\000o\000n\000s\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1721 0 obj +<< /S /GoTo /D (subsubsection.13.116.1) >> +endobj +1724 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1725 0 obj +<< /S /GoTo /D (subsubsection.13.116.2) >> +endobj +1728 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1729 0 obj +<< /S /GoTo /D (subsubsection.13.116.3) >> +endobj +1732 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1733 0 obj +<< /S /GoTo /D (subsection.13.117) >> +endobj +1736 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000s\000e\000r\000v\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1737 0 obj +<< /S /GoTo /D (subsubsection.13.117.1) >> +endobj +1740 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1741 0 obj +<< /S /GoTo /D (subsubsection.13.117.2) >> +endobj +1744 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1745 0 obj +<< /S /GoTo /D (subsubsection.13.117.3) >> +endobj +1748 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1749 0 obj +<< /S /GoTo /D (subsection.13.118) >> +endobj +1752 0 obj +(\376\377\000r\000p\000k\000i\000.\000h\000t\000t\000p\000s\000.\000h\000t\000t\000p\000\137\000s\000t\000r\000e\000a\000m\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1753 0 obj +<< /S /GoTo /D (subsubsection.13.118.1) >> +endobj +1756 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1757 0 obj +<< /S /GoTo /D (subsubsection.13.118.2) >> +endobj +1760 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1761 0 obj +<< /S /GoTo /D (subsubsection.13.118.3) >> +endobj +1764 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1765 0 obj +<< /S /GoTo /D (subsection.13.119) >> +endobj +1768 0 obj +(\376\377\000r\000p\000k\000i\000.\000i\000p\000a\000d\000d\000r\000s\000.\000v\0004\000a\000d\000d\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1769 0 obj +<< /S /GoTo /D (subsubsection.13.119.1) >> +endobj +1772 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1773 0 obj +<< /S /GoTo /D (subsubsection.13.119.2) >> +endobj +1776 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1777 0 obj +<< /S /GoTo /D (subsubsection.13.119.3) >> +endobj +1780 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1781 0 obj +<< /S /GoTo /D (subsection.13.120) >> +endobj +1784 0 obj +(\376\377\000r\000p\000k\000i\000.\000i\000p\000a\000d\000d\000r\000s\000.\000v\0006\000a\000d\000d\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1785 0 obj +<< /S /GoTo /D (subsubsection.13.120.1) >> +endobj +1788 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1789 0 obj +<< /S /GoTo /D (subsubsection.13.120.2) >> +endobj +1792 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1793 0 obj +<< /S /GoTo /D (subsubsection.13.120.3) >> +endobj +1796 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1797 0 obj +<< /S /GoTo /D (subsection.13.121) >> +endobj +1800 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000b\000s\000c\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1801 0 obj +<< /S /GoTo /D (subsubsection.13.121.1) >> +endobj +1804 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1805 0 obj +<< /S /GoTo /D (subsubsection.13.121.2) >> +endobj +1808 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1809 0 obj +<< /S /GoTo /D (subsubsection.13.121.3) >> +endobj +1812 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1813 0 obj +<< /S /GoTo /D (subsection.13.122) >> +endobj +1816 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000c\000h\000i\000l\000d\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1817 0 obj +<< /S /GoTo /D (subsubsection.13.122.1) >> +endobj +1820 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1821 0 obj +<< /S /GoTo /D (subsubsection.13.122.2) >> +endobj +1824 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1825 0 obj +<< /S /GoTo /D (subsubsection.13.122.3) >> +endobj +1828 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1829 0 obj +<< /S /GoTo /D (subsection.13.123) >> +endobj +1832 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000c\000m\000s\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1833 0 obj +<< /S /GoTo /D (subsubsection.13.123.1) >> +endobj +1836 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1837 0 obj +<< /S /GoTo /D (subsubsection.13.123.2) >> +endobj +1840 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1841 0 obj +<< /S /GoTo /D (subsection.13.124) >> +endobj +1844 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000d\000a\000t\000a\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1845 0 obj +<< /S /GoTo /D (subsubsection.13.124.1) >> +endobj +1848 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1849 0 obj +<< /S /GoTo /D (subsubsection.13.124.2) >> +endobj +1852 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1853 0 obj +<< /S /GoTo /D (subsubsection.13.124.3) >> +endobj +1856 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1857 0 obj +<< /S /GoTo /D (subsection.13.125) >> +endobj +1860 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000\137\000n\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1861 0 obj +<< /S /GoTo /D (subsubsection.13.125.1) >> +endobj +1864 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1865 0 obj +<< /S /GoTo /D (subsubsection.13.125.2) >> +endobj +1868 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1869 0 obj +<< /S /GoTo /D (subsection.13.126) >> +endobj +1872 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000l\000i\000s\000t\000\137\000p\000u\000b\000l\000i\000s\000h\000e\000d\000\137\000o\000b\000j\000e\000c\000t\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1873 0 obj +<< /S /GoTo /D (subsubsection.13.126.1) >> +endobj +1876 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1877 0 obj +<< /S /GoTo /D (subsubsection.13.126.2) >> +endobj +1880 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1881 0 obj +<< /S /GoTo /D (subsubsection.13.126.3) >> +endobj +1884 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1885 0 obj +<< /S /GoTo /D (subsection.13.127) >> +endobj +1888 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000l\000i\000s\000t\000\137\000r\000e\000c\000e\000i\000v\000e\000d\000\137\000r\000e\000s\000o\000u\000r\000c\000e\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1889 0 obj +<< /S /GoTo /D (subsubsection.13.127.1) >> +endobj +1892 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1893 0 obj +<< /S /GoTo /D (subsubsection.13.127.2) >> +endobj +1896 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1897 0 obj +<< /S /GoTo /D (subsubsection.13.127.3) >> +endobj +1900 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1901 0 obj +<< /S /GoTo /D (subsection.13.128) >> +endobj +1904 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000l\000i\000s\000t\000\137\000r\000e\000s\000o\000u\000r\000c\000e\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1905 0 obj +<< /S /GoTo /D (subsubsection.13.128.1) >> +endobj +1908 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1909 0 obj +<< /S /GoTo /D (subsubsection.13.128.2) >> +endobj +1912 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1913 0 obj +<< /S /GoTo /D (subsubsection.13.128.3) >> +endobj +1916 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1917 0 obj +<< /S /GoTo /D (subsection.13.129) >> +endobj +1920 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000l\000i\000s\000t\000\137\000r\000o\000a\000\137\000r\000e\000q\000u\000e\000s\000t\000s\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1921 0 obj +<< /S /GoTo /D (subsubsection.13.129.1) >> +endobj +1924 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1925 0 obj +<< /S /GoTo /D (subsubsection.13.129.2) >> +endobj +1928 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1929 0 obj +<< /S /GoTo /D (subsubsection.13.129.3) >> +endobj +1932 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1933 0 obj +<< /S /GoTo /D (subsection.13.130) >> +endobj +1936 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1937 0 obj +<< /S /GoTo /D (subsubsection.13.130.1) >> +endobj +1940 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1941 0 obj +<< /S /GoTo /D (subsubsection.13.130.2) >> +endobj +1944 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1945 0 obj +<< /S /GoTo /D (subsubsection.13.130.3) >> +endobj +1948 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1949 0 obj +<< /S /GoTo /D (subsection.13.131) >> +endobj +1952 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000p\000a\000r\000e\000n\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1953 0 obj +<< /S /GoTo /D (subsubsection.13.131.1) >> +endobj +1956 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1957 0 obj +<< /S /GoTo /D (subsubsection.13.131.2) >> +endobj +1960 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1961 0 obj +<< /S /GoTo /D (subsubsection.13.131.3) >> +endobj +1964 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1965 0 obj +<< /S /GoTo /D (subsection.13.132) >> +endobj +1968 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000r\000e\000p\000o\000r\000t\000\137\000e\000r\000r\000o\000r\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1969 0 obj +<< /S /GoTo /D (subsubsection.13.132.1) >> +endobj +1972 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1973 0 obj +<< /S /GoTo /D (subsubsection.13.132.2) >> +endobj +1976 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1977 0 obj +<< /S /GoTo /D (subsubsection.13.132.3) >> +endobj +1980 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1981 0 obj +<< /S /GoTo /D (subsection.13.133) >> +endobj +1984 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000r\000e\000p\000o\000s\000i\000t\000o\000r\000y\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +1985 0 obj +<< /S /GoTo /D (subsubsection.13.133.1) >> +endobj +1988 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +1989 0 obj +<< /S /GoTo /D (subsubsection.13.133.2) >> +endobj +1992 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1993 0 obj +<< /S /GoTo /D (subsubsection.13.133.3) >> +endobj +1996 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +1997 0 obj +<< /S /GoTo /D (subsection.13.134) >> +endobj +2000 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000s\000a\000x\000\137\000h\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2001 0 obj +<< /S /GoTo /D (subsubsection.13.134.1) >> +endobj +2004 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2005 0 obj +<< /S /GoTo /D (subsubsection.13.134.2) >> +endobj +2008 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2009 0 obj +<< /S /GoTo /D (subsection.13.135) >> +endobj +2012 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000e\000f\000t\000\137\000r\000i\000g\000h\000t\000.\000s\000e\000l\000f\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2013 0 obj +<< /S /GoTo /D (subsubsection.13.135.1) >> +endobj +2016 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2017 0 obj +<< /S /GoTo /D (subsubsection.13.135.2) >> +endobj +2020 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2021 0 obj +<< /S /GoTo /D (subsubsection.13.135.3) >> +endobj +2024 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2025 0 obj +<< /S /GoTo /D (subsection.13.136) >> +endobj +2028 0 obj +(\376\377\000r\000p\000k\000i\000.\000l\000o\000g\000.\000l\000o\000g\000g\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2029 0 obj +<< /S /GoTo /D (subsubsection.13.136.1) >> +endobj +2032 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2033 0 obj +<< /S /GoTo /D (subsubsection.13.136.2) >> +endobj +2036 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2037 0 obj +<< /S /GoTo /D (subsubsection.13.136.3) >> +endobj +2040 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2041 0 obj +<< /S /GoTo /D (subsection.13.137) >> +endobj +2044 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000a\000n\000i\000f\000e\000s\000t\000.\000F\000i\000l\000e\000A\000n\000d\000H\000a\000s\000h\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2045 0 obj +<< /S /GoTo /D (subsubsection.13.137.1) >> +endobj +2048 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2049 0 obj +<< /S /GoTo /D (subsubsection.13.137.2) >> +endobj +2052 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2053 0 obj +<< /S /GoTo /D (subsubsection.13.137.3) >> +endobj +2056 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2057 0 obj +<< /S /GoTo /D (subsection.13.138) >> +endobj +2060 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000a\000n\000i\000f\000e\000s\000t\000.\000F\000i\000l\000e\000s\000A\000n\000d\000H\000a\000s\000h\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2061 0 obj +<< /S /GoTo /D (subsubsection.13.138.1) >> +endobj +2064 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2065 0 obj +<< /S /GoTo /D (subsubsection.13.138.2) >> +endobj +2068 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2069 0 obj +<< /S /GoTo /D (subsection.13.139) >> +endobj +2072 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000a\000n\000i\000f\000e\000s\000t\000.\000M\000a\000n\000i\000f\000e\000s\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2073 0 obj +<< /S /GoTo /D (subsubsection.13.139.1) >> +endobj +2076 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2077 0 obj +<< /S /GoTo /D (subsubsection.13.139.2) >> +endobj +2080 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2081 0 obj +<< /S /GoTo /D (subsubsection.13.139.3) >> +endobj +2084 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2085 0 obj +<< /S /GoTo /D (subsection.13.140) >> +endobj +2088 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000C\000A\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2089 0 obj +<< /S /GoTo /D (subsubsection.13.140.1) >> +endobj +2092 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2093 0 obj +<< /S /GoTo /D (subsubsection.13.140.2) >> +endobj +2096 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2097 0 obj +<< /S /GoTo /D (subsubsection.13.140.3) >> +endobj +2100 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2101 0 obj +<< /S /GoTo /D (subsection.13.141) >> +endobj +2104 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000c\000h\000i\000l\000d\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2105 0 obj +<< /S /GoTo /D (subsubsection.13.141.1) >> +endobj +2108 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2109 0 obj +<< /S /GoTo /D (subsubsection.13.141.2) >> +endobj +2112 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2113 0 obj +<< /S /GoTo /D (subsubsection.13.141.3) >> +endobj +2116 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2117 0 obj +<< /S /GoTo /D (subsection.13.142) >> +endobj +2120 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000c\000h\000i\000l\000d\000r\000e\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2121 0 obj +<< /S /GoTo /D (subsubsection.13.142.1) >> +endobj +2124 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2125 0 obj +<< /S /GoTo /D (subsubsection.13.142.2) >> +endobj +2128 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2129 0 obj +<< /S /GoTo /D (subsection.13.143) >> +endobj +2132 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000c\000o\000m\000m\000a\000\137\000s\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2133 0 obj +<< /S /GoTo /D (subsubsection.13.143.1) >> +endobj +2136 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2137 0 obj +<< /S /GoTo /D (subsubsection.13.143.2) >> +endobj +2140 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2141 0 obj +<< /S /GoTo /D (subsection.13.144) >> +endobj +2144 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000c\000s\000v\000\137\000r\000e\000a\000d\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2145 0 obj +<< /S /GoTo /D (subsubsection.13.144.1) >> +endobj +2148 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2149 0 obj +<< /S /GoTo /D (subsubsection.13.144.2) >> +endobj +2152 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2153 0 obj +<< /S /GoTo /D (subsubsection.13.144.3) >> +endobj +2156 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2157 0 obj +<< /S /GoTo /D (subsection.13.145) >> +endobj +2160 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000c\000s\000v\000\137\000w\000r\000i\000t\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2161 0 obj +<< /S /GoTo /D (subsubsection.13.145.1) >> +endobj +2164 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2165 0 obj +<< /S /GoTo /D (subsubsection.13.145.2) >> +endobj +2168 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2169 0 obj +<< /S /GoTo /D (subsubsection.13.145.3) >> +endobj +2172 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2173 0 obj +<< /S /GoTo /D (subsection.13.146) >> +endobj +2176 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000E\000n\000t\000i\000t\000y\000D\000B\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2177 0 obj +<< /S /GoTo /D (subsubsection.13.146.1) >> +endobj +2180 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2181 0 obj +<< /S /GoTo /D (subsubsection.13.146.2) >> +endobj +2184 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2185 0 obj +<< /S /GoTo /D (subsubsection.13.146.3) >> +endobj +2188 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2189 0 obj +<< /S /GoTo /D (subsection.13.147) >> +endobj +2192 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000m\000a\000i\000n\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2193 0 obj +<< /S /GoTo /D (subsubsection.13.147.1) >> +endobj +2196 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2197 0 obj +<< /S /GoTo /D (subsubsection.13.147.2) >> +endobj +2200 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2201 0 obj +<< /S /GoTo /D (subsubsection.13.147.3) >> +endobj +2204 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2205 0 obj +<< /S /GoTo /D (subsection.13.148) >> +endobj +2208 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000p\000a\000r\000e\000n\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2209 0 obj +<< /S /GoTo /D (subsubsection.13.148.1) >> +endobj +2212 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2213 0 obj +<< /S /GoTo /D (subsubsection.13.148.2) >> +endobj +2216 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2217 0 obj +<< /S /GoTo /D (subsubsection.13.148.3) >> +endobj +2220 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2221 0 obj +<< /S /GoTo /D (subsection.13.149) >> +endobj +2224 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000p\000a\000r\000e\000n\000t\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2225 0 obj +<< /S /GoTo /D (subsubsection.13.149.1) >> +endobj +2228 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2229 0 obj +<< /S /GoTo /D (subsubsection.13.149.2) >> +endobj +2232 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2233 0 obj +<< /S /GoTo /D (subsection.13.150) >> +endobj +2236 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000r\000e\000p\000o\000s\000i\000t\000o\000r\000i\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2237 0 obj +<< /S /GoTo /D (subsubsection.13.150.1) >> +endobj +2240 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2241 0 obj +<< /S /GoTo /D (subsubsection.13.150.2) >> +endobj +2244 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2245 0 obj +<< /S /GoTo /D (subsection.13.151) >> +endobj +2248 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000r\000e\000p\000o\000s\000i\000t\000o\000r\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2249 0 obj +<< /S /GoTo /D (subsubsection.13.151.1) >> +endobj +2252 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2253 0 obj +<< /S /GoTo /D (subsubsection.13.151.2) >> +endobj +2256 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2257 0 obj +<< /S /GoTo /D (subsubsection.13.151.3) >> +endobj +2260 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2261 0 obj +<< /S /GoTo /D (subsection.13.152) >> +endobj +2264 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000r\000o\000a\000\137\000r\000e\000q\000u\000e\000s\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2265 0 obj +<< /S /GoTo /D (subsubsection.13.152.1) >> +endobj +2268 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2269 0 obj +<< /S /GoTo /D (subsubsection.13.152.2) >> +endobj +2272 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2273 0 obj +<< /S /GoTo /D (subsubsection.13.152.3) >> +endobj +2276 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2277 0 obj +<< /S /GoTo /D (subsection.13.153) >> +endobj +2280 0 obj +(\376\377\000r\000p\000k\000i\000.\000m\000y\000r\000p\000k\000i\000.\000r\000o\000a\000\137\000r\000e\000q\000u\000e\000s\000t\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2281 0 obj +<< /S /GoTo /D (subsubsection.13.153.1) >> +endobj +2284 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2285 0 obj +<< /S /GoTo /D (subsubsection.13.153.2) >> +endobj +2288 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2289 0 obj +<< /S /GoTo /D (subsection.13.154) >> +endobj +2292 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000e\000r\000t\000i\000f\000i\000c\000a\000t\000e\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2293 0 obj +<< /S /GoTo /D (subsubsection.13.154.1) >> +endobj +2296 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2297 0 obj +<< /S /GoTo /D (subsubsection.13.154.2) >> +endobj +2300 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2301 0 obj +<< /S /GoTo /D (subsection.13.155) >> +endobj +2304 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000l\000i\000e\000n\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2305 0 obj +<< /S /GoTo /D (subsubsection.13.155.1) >> +endobj +2308 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2309 0 obj +<< /S /GoTo /D (subsubsection.13.155.2) >> +endobj +2312 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2313 0 obj +<< /S /GoTo /D (subsubsection.13.155.3) >> +endobj +2316 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2317 0 obj +<< /S /GoTo /D (subsection.13.156) >> +endobj +2320 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000m\000s\000\137\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2321 0 obj +<< /S /GoTo /D (subsubsection.13.156.1) >> +endobj +2324 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2325 0 obj +<< /S /GoTo /D (subsubsection.13.156.2) >> +endobj +2328 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2329 0 obj +<< /S /GoTo /D (subsection.13.157) >> +endobj +2332 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000o\000n\000f\000i\000g\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2333 0 obj +<< /S /GoTo /D (subsubsection.13.157.1) >> +endobj +2336 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2337 0 obj +<< /S /GoTo /D (subsubsection.13.157.2) >> +endobj +2340 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2341 0 obj +<< /S /GoTo /D (subsubsection.13.157.3) >> +endobj +2344 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2345 0 obj +<< /S /GoTo /D (subsection.13.158) >> +endobj +2348 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000o\000n\000t\000r\000o\000l\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2349 0 obj +<< /S /GoTo /D (subsubsection.13.158.1) >> +endobj +2352 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2353 0 obj +<< /S /GoTo /D (subsubsection.13.158.2) >> +endobj +2356 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2357 0 obj +<< /S /GoTo /D (subsection.13.159) >> +endobj +2360 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000c\000r\000l\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2361 0 obj +<< /S /GoTo /D (subsubsection.13.159.1) >> +endobj +2364 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2365 0 obj +<< /S /GoTo /D (subsubsection.13.159.2) >> +endobj +2368 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2369 0 obj +<< /S /GoTo /D (subsection.13.160) >> +endobj +2372 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000m\000a\000n\000i\000f\000e\000s\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2373 0 obj +<< /S /GoTo /D (subsubsection.13.160.1) >> +endobj +2376 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2377 0 obj +<< /S /GoTo /D (subsubsection.13.160.2) >> +endobj +2380 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2381 0 obj +<< /S /GoTo /D (subsection.13.161) >> +endobj +2384 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000m\000s\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2385 0 obj +<< /S /GoTo /D (subsubsection.13.161.1) >> +endobj +2388 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2389 0 obj +<< /S /GoTo /D (subsubsection.13.161.2) >> +endobj +2392 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2393 0 obj +<< /S /GoTo /D (subsubsection.13.161.3) >> +endobj +2396 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2397 0 obj +<< /S /GoTo /D (subsection.13.162) >> +endobj +2400 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000n\000a\000m\000e\000s\000p\000a\000c\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2401 0 obj +<< /S /GoTo /D (subsubsection.13.162.1) >> +endobj +2404 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2405 0 obj +<< /S /GoTo /D (subsubsection.13.162.2) >> +endobj +2408 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2409 0 obj +<< /S /GoTo /D (subsection.13.163) >> +endobj +2412 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000\137\000o\000b\000j\000e\000c\000t\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2413 0 obj +<< /S /GoTo /D (subsubsection.13.163.1) >> +endobj +2416 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2417 0 obj +<< /S /GoTo /D (subsubsection.13.163.2) >> +endobj +2420 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2421 0 obj +<< /S /GoTo /D (subsubsection.13.163.3) >> +endobj +2424 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2425 0 obj +<< /S /GoTo /D (subsection.13.164) >> +endobj +2428 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000r\000e\000p\000o\000r\000t\000\137\000e\000r\000r\000o\000r\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2429 0 obj +<< /S /GoTo /D (subsubsection.13.164.1) >> +endobj +2432 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2433 0 obj +<< /S /GoTo /D (subsubsection.13.164.2) >> +endobj +2436 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2437 0 obj +<< /S /GoTo /D (subsubsection.13.164.3) >> +endobj +2440 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2441 0 obj +<< /S /GoTo /D (subsection.13.165) >> +endobj +2444 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000r\000o\000a\000\137\000e\000l\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2445 0 obj +<< /S /GoTo /D (subsubsection.13.165.1) >> +endobj +2448 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2449 0 obj +<< /S /GoTo /D (subsubsection.13.165.2) >> +endobj +2452 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2453 0 obj +<< /S /GoTo /D (subsection.13.166) >> +endobj +2456 0 obj +(\376\377\000r\000p\000k\000i\000.\000p\000u\000b\000l\000i\000c\000a\000t\000i\000o\000n\000.\000s\000a\000x\000\137\000h\000a\000n\000d\000l\000e\000r\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2457 0 obj +<< /S /GoTo /D (subsubsection.13.166.1) >> +endobj +2460 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2461 0 obj +<< /S /GoTo /D (subsubsection.13.166.2) >> +endobj +2464 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2465 0 obj +<< /S /GoTo /D (subsection.13.167) >> +endobj +2468 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000b\000a\000g\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2469 0 obj +<< /S /GoTo /D (subsubsection.13.167.1) >> +endobj +2472 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2473 0 obj +<< /S /GoTo /D (subsubsection.13.167.2) >> +endobj +2476 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2477 0 obj +<< /S /GoTo /D (subsubsection.13.167.3) >> +endobj +2480 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2481 0 obj +<< /S /GoTo /D (subsection.13.168) >> +endobj +2484 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000r\000a\000n\000g\000e\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2485 0 obj +<< /S /GoTo /D (subsubsection.13.168.1) >> +endobj +2488 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2489 0 obj +<< /S /GoTo /D (subsubsection.13.168.2) >> +endobj +2492 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2493 0 obj +<< /S /GoTo /D (subsubsection.13.168.3) >> +endobj +2496 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2497 0 obj +<< /S /GoTo /D (subsection.13.169) >> +endobj +2500 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000r\000a\000n\000g\000e\000\137\000a\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2501 0 obj +<< /S /GoTo /D (subsubsection.13.169.1) >> +endobj +2504 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2505 0 obj +<< /S /GoTo /D (subsubsection.13.169.2) >> +endobj +2508 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2509 0 obj +<< /S /GoTo /D (subsubsection.13.169.3) >> +endobj +2512 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2513 0 obj +<< /S /GoTo /D (subsection.13.170) >> +endobj +2516 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000r\000a\000n\000g\000e\000\137\000i\000p\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2517 0 obj +<< /S /GoTo /D (subsubsection.13.170.1) >> +endobj +2520 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2521 0 obj +<< /S /GoTo /D (subsubsection.13.170.2) >> +endobj +2524 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2525 0 obj +<< /S /GoTo /D (subsubsection.13.170.3) >> +endobj +2528 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2529 0 obj +<< /S /GoTo /D (subsection.13.171) >> +endobj +2532 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000r\000a\000n\000g\000e\000\137\000i\000p\000v\0004\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2533 0 obj +<< /S /GoTo /D (subsubsection.13.171.1) >> +endobj +2536 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2537 0 obj +<< /S /GoTo /D (subsubsection.13.171.2) >> +endobj +2540 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2541 0 obj +<< /S /GoTo /D (subsection.13.172) >> +endobj +2544 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000r\000a\000n\000g\000e\000\137\000i\000p\000v\0006\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2545 0 obj +<< /S /GoTo /D (subsubsection.13.172.1) >> +endobj +2548 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2549 0 obj +<< /S /GoTo /D (subsubsection.13.172.2) >> +endobj +2552 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2553 0 obj +<< /S /GoTo /D (subsection.13.173) >> +endobj +2556 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2557 0 obj +<< /S /GoTo /D (subsubsection.13.173.1) >> +endobj +2560 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2561 0 obj +<< /S /GoTo /D (subsubsection.13.173.2) >> +endobj +2564 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2565 0 obj +<< /S /GoTo /D (subsubsection.13.173.3) >> +endobj +2568 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2569 0 obj +<< /S /GoTo /D (subsection.13.174) >> +endobj +2572 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000\137\000a\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2573 0 obj +<< /S /GoTo /D (subsubsection.13.174.1) >> +endobj +2576 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2577 0 obj +<< /S /GoTo /D (subsubsection.13.174.2) >> +endobj +2580 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2581 0 obj +<< /S /GoTo /D (subsubsection.13.174.3) >> +endobj +2584 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2585 0 obj +<< /S /GoTo /D (subsection.13.175) >> +endobj +2588 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000\137\000i\000p\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2589 0 obj +<< /S /GoTo /D (subsubsection.13.175.1) >> +endobj +2592 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2593 0 obj +<< /S /GoTo /D (subsubsection.13.175.2) >> +endobj +2596 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2597 0 obj +<< /S /GoTo /D (subsubsection.13.175.3) >> +endobj +2600 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2601 0 obj +<< /S /GoTo /D (subsection.13.176) >> +endobj +2604 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000\137\000i\000p\000v\0004\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2605 0 obj +<< /S /GoTo /D (subsubsection.13.176.1) >> +endobj +2608 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2609 0 obj +<< /S /GoTo /D (subsubsection.13.176.2) >> +endobj +2612 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2613 0 obj +<< /S /GoTo /D (subsection.13.177) >> +endobj +2616 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000\137\000i\000p\000v\0006\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2617 0 obj +<< /S /GoTo /D (subsubsection.13.177.1) >> +endobj +2620 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2621 0 obj +<< /S /GoTo /D (subsubsection.13.177.2) >> +endobj +2624 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2625 0 obj +<< /S /GoTo /D (subsection.13.178) >> +endobj +2628 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2629 0 obj +<< /S /GoTo /D (subsubsection.13.178.1) >> +endobj +2632 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2633 0 obj +<< /S /GoTo /D (subsubsection.13.178.2) >> +endobj +2636 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2637 0 obj +<< /S /GoTo /D (subsubsection.13.178.3) >> +endobj +2640 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2641 0 obj +<< /S /GoTo /D (subsection.13.179) >> +endobj +2644 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\137\000i\000p\000v\0004\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2645 0 obj +<< /S /GoTo /D (subsubsection.13.179.1) >> +endobj +2648 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2649 0 obj +<< /S /GoTo /D (subsubsection.13.179.2) >> +endobj +2652 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2653 0 obj +<< /S /GoTo /D (subsection.13.180) >> +endobj +2656 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\137\000i\000p\000v\0006\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2657 0 obj +<< /S /GoTo /D (subsubsection.13.180.1) >> +endobj +2660 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2661 0 obj +<< /S /GoTo /D (subsubsection.13.180.2) >> +endobj +2664 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2665 0 obj +<< /S /GoTo /D (subsection.13.181) >> +endobj +2668 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\137\000s\000e\000t\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2669 0 obj +<< /S /GoTo /D (subsubsection.13.181.1) >> +endobj +2672 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2673 0 obj +<< /S /GoTo /D (subsubsection.13.181.2) >> +endobj +2676 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2677 0 obj +<< /S /GoTo /D (subsection.13.182) >> +endobj +2680 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\137\000s\000e\000t\000\137\000i\000p\000v\0004\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2681 0 obj +<< /S /GoTo /D (subsubsection.13.182.1) >> +endobj +2684 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2685 0 obj +<< /S /GoTo /D (subsubsection.13.182.2) >> +endobj +2688 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2689 0 obj +<< /S /GoTo /D (subsection.13.183) >> +endobj +2692 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000e\000s\000o\000u\000r\000c\000e\000\137\000s\000e\000t\000.\000r\000o\000a\000\137\000p\000r\000e\000f\000i\000x\000\137\000s\000e\000t\000\137\000i\000p\000v\0006\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2693 0 obj +<< /S /GoTo /D (subsubsection.13.183.1) >> +endobj +2696 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2697 0 obj +<< /S /GoTo /D (subsubsection.13.183.2) >> +endobj +2700 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2701 0 obj +<< /S /GoTo /D (subsection.13.184) >> +endobj +2704 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000o\000a\000.\000R\000O\000A\000I\000P\000A\000d\000d\000r\000e\000s\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2705 0 obj +<< /S /GoTo /D (subsubsection.13.184.1) >> +endobj +2708 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2709 0 obj +<< /S /GoTo /D (subsubsection.13.184.2) >> +endobj +2712 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2713 0 obj +<< /S /GoTo /D (subsubsection.13.184.3) >> +endobj +2716 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000D\000a\000t\000a\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2717 0 obj +<< /S /GoTo /D (subsection.13.185) >> +endobj +2720 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000o\000a\000.\000R\000O\000A\000I\000P\000A\000d\000d\000r\000e\000s\000s\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2721 0 obj +<< /S /GoTo /D (subsubsection.13.185.1) >> +endobj +2724 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2725 0 obj +<< /S /GoTo /D (subsubsection.13.185.2) >> +endobj +2728 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2729 0 obj +<< /S /GoTo /D (subsection.13.186) >> +endobj +2732 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000o\000a\000.\000R\000O\000A\000I\000P\000A\000d\000d\000r\000e\000s\000s\000F\000a\000m\000i\000l\000i\000e\000s\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2733 0 obj +<< /S /GoTo /D (subsubsection.13.186.1) >> +endobj +2736 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2737 0 obj +<< /S /GoTo /D (subsubsection.13.186.2) >> +endobj +2740 0 obj +(\376\377\000M\000e\000m\000b\000e\000r\000\040\000F\000u\000n\000c\000t\000i\000o\000n\000\040\000D\000o\000c\000u\000m\000e\000n\000t\000a\000t\000i\000o\000n) +endobj +2741 0 obj +<< /S /GoTo /D (subsection.13.187) >> +endobj +2744 0 obj +(\376\377\000r\000p\000k\000i\000.\000r\000o\000a\000.\000R\000O\000A\000I\000P\000A\000d\000d\000r\000e\000s\000s\000F\000a\000m\000i\000l\000y\000\040\000C\000l\000a\000s\000s\000\040\000R\000e\000f\000e\000r\000e\000n\000c\000e) +endobj +2745 0 obj +<< /S /GoTo /D (subsubsection.13.187.1) >> +endobj +2748 0 obj +(\376\377\000D\000e\000t\000a\000i\000l\000e\000d\000\040\000D\000e\000s\000c\000r\000i\000p\000t\000i\000o\000n) +endobj +2749 0 obj |