├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── LICENSE.txt ├── README.md ├── cmake └── modules │ └── HeadersToIncludeDirs.cmake ├── doc └── blif.pdf ├── src ├── blif_common.cpp ├── blif_common.hpp ├── blif_error.cpp ├── blif_error.hpp ├── blif_lexer.cpp ├── blif_lexer.hpp ├── blif_lexer.l ├── blif_lexer_fwd.hpp ├── blif_parser.hpp ├── blif_parser.y ├── blif_pretty_print.cpp ├── blif_pretty_print.hpp ├── blifparse.cpp ├── blifparse.hpp └── main.cpp └── test ├── eblif ├── ex5p.blif ├── sha.eblif ├── test.eblif ├── test_blank_param_attr.eblif ├── yosys.blif └── yosys.cmd └── test_parser.sh /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | blifparse_test 3 | libblifparse.a 4 | obj/ 5 | src/blif_lexer.gen.c 6 | src/blif_lexer.gen.h 7 | src/blif_parser.gen.c 8 | src/blif_parser.gen.h 9 | src/stack.hh 10 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | dist: trusty #Ubuntu 14.04 by default 3 | sudo: false #Use container based infrastructure 4 | 5 | matrix: 6 | include: 7 | #Extensive testing for base compiler 8 | - env: MATRIX_EVAL="CC=gcc-5 CXX=g++-5" 9 | addons: { apt: { packages: ["cmake", "g++-5", "libtbb-dev", "flex", "bison"], sources: ["ubuntu-toolchain-r-test"] } } 10 | before_install: 11 | - eval "${MATRIX_EVAL}" #Set compiler versions 12 | - echo $CC 13 | - echo $CXX 14 | 15 | script: 16 | #Build 17 | - mkdir -p build 18 | - pushd build 19 | - cmake .. 20 | - make -j2 21 | 22 | #Test 23 | - ../test/test_parser.sh ../test 24 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.9) 2 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) 3 | include(HeadersToIncludeDirs) 4 | 5 | project("libblifparse") 6 | 7 | if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) 8 | #Only set compiler settings if we are not a sub-project 9 | set(WARN_FLAGS "-Wall -Wextra -Wpedantic -Wcast-qual -Wcast-align -Wshadow -Wformat=2 -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wredundant-decls -Wswitch-default -Wundef -Wunused-variable -Wdisabled-optimization -Wnoexcept -Woverloaded-virtual -Wctor-dtor-privacy -Wnon-virtual-dtor") 10 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11 ${WARN_FLAGS}") 11 | #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=leak -fsanitize=undefined") 12 | set(FLEX_BISON_WARN_SUPPRESS_FLAGS "-Wno-switch-default -Wno-unused-parameter -Wno-missing-declarations") 13 | endif() 14 | 15 | #Flex and Bison are used to generate the parser 16 | find_package(BISON REQUIRED 3.0) 17 | find_package(FLEX REQUIRED) 18 | 19 | file(GLOB_RECURSE LIB_SOURCES src/blif*.cpp) 20 | file(GLOB_RECURSE LIB_HEADERS src/blif*.hpp) 21 | headers_to_include_dirs(LIB_HEADERS LIB_INCLUDE_DIRS) 22 | 23 | #Find the flex and bison input files 24 | file(GLOB_RECURSE LEXER_SOURCES src/blif*.l) 25 | file(GLOB_RECURSE PARSER_SOURCES src/blif*.y) 26 | 27 | #Make the flex and bison targets 28 | flex_target(BlifLexer ${LEXER_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/blif_lexer.gen.cpp 29 | COMPILE_FLAGS --header-file=${CMAKE_CURRENT_BINARY_DIR}/blif_lexer.gen.hpp) 30 | bison_target(BlifParser ${PARSER_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/blif_parser.gen.cpp) 31 | add_flex_bison_dependency(BlifLexer BlifParser) 32 | 33 | #Suppress warnings in Flex/Bison generated files 34 | if(FLEX_BISON_WARN_SUPPRESS_FLAGS) 35 | set_source_files_properties(${FLEX_BlifLexer_OUTPUTS} ${BISON_BlifParser_OUTPUT_SOURCE} 36 | PROPERTIES COMPILE_FLAGS ${FLEX_BISON_WARN_SUPPRESS_FLAGS}) 37 | endif() 38 | 39 | #Create the library 40 | add_library(libblifparse STATIC 41 | ${LIB_HEADERS} 42 | ${LIB_SOURCES} 43 | ${FLEX_BlifLexer_OUTPUTS} 44 | ${BISON_BlifParser_OUTPUT_SOURCE}) 45 | target_include_directories(libblifparse PUBLIC ${LIB_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}) 46 | set_target_properties(libblifparse PROPERTIES PREFIX "") #Avoid extra 'lib' prefix 47 | 48 | #Create the test executable 49 | add_executable(blifparse_test src/main.cpp) 50 | target_link_libraries(blifparse_test libblifparse) 51 | 52 | #Suppress IPO link warnings 53 | get_target_property(USES_IPO blifparse_test INTERPROCEDURAL_OPTIMIZATION) 54 | if (USES_IPO) 55 | set(IPO_LINK_WARN_FLAGS_TO_CHECK "-Wno-null-dereference") 56 | foreach(flag ${IPO_LINK_WARN_FLAGS_TO_CHECK}) 57 | CHECK_CXX_COMPILER_FLAG(${flag} CXX_COMPILER_SUPPORTS_${flag}) 58 | if(CXX_COMPILER_SUPPORTS_${flag}) 59 | #Flag supported, so enable it 60 | set_target_properties(blifparse_test PROPERTIES LINK_FLAGS ${flag}) 61 | endif() 62 | endforeach() 63 | endif() 64 | 65 | if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) 66 | #Add the tests if we are the root project 67 | enable_testing() 68 | add_test(NAME test_parse_blif 69 | COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test/test_parser.sh ${CMAKE_CURRENT_SOURCE_DIR}/test/*/*.blif ${CMAKE_CURRENT_SOURCE_DIR}/test/*/*.eblif) 70 | endif() 71 | 72 | install(TARGETS libblifparse blifparse_test DESTINATION bin) 73 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Kevin E. Murray 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | libblifparse 2 | ---------------------------------- 3 | 4 | This library provides a parser for a Berkely Logic Interchange Format (BLIF) files. 5 | See comments at the top of 'src/blifparse.hpp' for more detailed information and usage. 6 | 7 | -------------------------------------------------------------------------------- /cmake/modules/HeadersToIncludeDirs.cmake: -------------------------------------------------------------------------------- 1 | function(headers_to_include_dirs header_file_list include_directory_list) 2 | #Extract the directories for each header file 3 | foreach(header ${${header_file_list}}) 4 | get_filename_component(incl_dir ${header} DIRECTORY) 5 | list(APPEND dir_list ${incl_dir}) 6 | endforeach() 7 | 8 | #Remove any duplicates 9 | list(LENGTH "${dir_list}" length) 10 | if(${length} GREATER 1) #Avoid error with zero-length lists 11 | list(REMOVE_DUPLICATES ${dir_list}) 12 | endif() 13 | 14 | #Set the second argument in the caller's scope 15 | set(${include_directory_list} ${dir_list} PARENT_SCOPE) 16 | endfunction(headers_to_include_dirs) 17 | -------------------------------------------------------------------------------- /doc/blif.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/verilog-to-routing/libblifparse/5a0d3c9b2255af2cabfa4c237a7f6a8a2cbaae3b/doc/blif.pdf -------------------------------------------------------------------------------- /src/blif_common.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "blif_common.hpp" 5 | 6 | namespace blifparse { 7 | 8 | } //namespace 9 | -------------------------------------------------------------------------------- /src/blif_common.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_COMMON_HPP 2 | #define BLIF_COMMON_HPP 3 | 4 | #include "blifparse.hpp" 5 | 6 | namespace blifparse { 7 | 8 | /* 9 | * Function Declarations 10 | */ 11 | 12 | struct Names { 13 | std::vector nets; 14 | std::vector> so_cover; 15 | }; 16 | 17 | struct SubCkt { 18 | std::string model; 19 | std::vector ports; 20 | std::vector nets; 21 | }; 22 | 23 | /* 24 | * BLIF Extensions 25 | */ 26 | struct Conn { 27 | std::string src; 28 | std::string dst; 29 | }; 30 | 31 | struct Cname { 32 | std::string name; 33 | }; 34 | 35 | struct Attr { 36 | std::string name; 37 | std::string value; 38 | }; 39 | 40 | struct Param { 41 | std::string name; 42 | std::string value; 43 | }; 44 | 45 | } //namespace 46 | #endif 47 | -------------------------------------------------------------------------------- /src/blif_error.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "blif_error.hpp" 4 | #include "blifparse.hpp" 5 | 6 | namespace blifparse { 7 | 8 | std::string escape_string(const std::string& near_text); 9 | 10 | //We wrap the actual blif_error to issolate custom handlers from vaargs 11 | void blif_error_wrap(Callback& callback, const int line_no, const std::string& near_text, const char* fmt, ...) { 12 | va_list args; 13 | va_start(args, fmt); 14 | 15 | //We need to copy the args so we don't change them before the true formating 16 | va_list args_copy; 17 | va_copy(args_copy, args); 18 | 19 | //Determine the formatted length using a copy of the args 20 | int len = std::vsnprintf(nullptr, 0, fmt, args_copy); 21 | 22 | va_end(args_copy); //Clean-up 23 | 24 | //Negative if there is a problem with the format string 25 | assert(len >= 0 && "Problem decoding format string"); 26 | 27 | size_t buf_size = len + 1; //For terminator 28 | 29 | //Allocate a buffer 30 | // unique_ptr will free buffer automatically 31 | std::unique_ptr buf(new char[buf_size]); 32 | 33 | //Format into the buffer using the original args 34 | len = std::vsnprintf(buf.get(), buf_size, fmt, args); 35 | 36 | va_end(args); //Clean-up 37 | 38 | assert(len >= 0 && "Problem decoding format string"); 39 | assert(static_cast(len) == buf_size - 1); 40 | 41 | //Build the string from the buffer 42 | std::string msg(buf.get(), len); 43 | 44 | //TODO: escape near_text 45 | std::string escaped_near_text = escape_string(near_text); 46 | 47 | //Call the error handler 48 | callback.parse_error(line_no, escaped_near_text, msg); 49 | } 50 | 51 | std::string escape_string(const std::string& near_text) { 52 | std::string escaped_text; 53 | 54 | for(char c : near_text) { 55 | 56 | if(c == '\n') { 57 | escaped_text += "\\n"; 58 | } else if(c == '\r') { 59 | escaped_text += "\\r"; 60 | } else { 61 | escaped_text += c; 62 | } 63 | } 64 | 65 | return escaped_text; 66 | } 67 | 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/blif_error.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_ERROR_H 2 | #define BLIF_ERROR_H 3 | #include 4 | #include "blifparse.hpp" 5 | namespace blifparse { 6 | 7 | void blif_error_wrap(Callback& callback, const int line_no, const std::string& near_text, const char* fmt, ...); 8 | } 9 | #endif 10 | -------------------------------------------------------------------------------- /src/blif_lexer.cpp: -------------------------------------------------------------------------------- 1 | #include "blif_lexer.hpp" 2 | 3 | //Windows doesn't have unistd.h, so we set '%option nounistd' 4 | //in blif_lexer.l, but flex still includes it in the generated 5 | //header unless YY_NO_UNISTD_H is defined to 1 6 | #define YY_NO_UNISTD_H 1 7 | #include "blif_lexer.gen.hpp" //For blifparse_lex_*() 8 | 9 | extern YY_DECL; //For blifparse_lex() 10 | 11 | namespace blifparse { 12 | 13 | Lexer::Lexer(FILE* file, Callback& callback) 14 | : callback_(callback) { 15 | blifparse_lex_init(&state_); 16 | blifparse_set_in(file, state_); 17 | } 18 | 19 | Lexer::~Lexer() { 20 | blifparse_lex_destroy(state_); 21 | } 22 | 23 | Parser::symbol_type Lexer::next_token() { 24 | return blifparse_lex(state_, callback_); 25 | } 26 | 27 | const char* Lexer::text() const { 28 | return blifparse_get_text(state_); 29 | } 30 | 31 | int Lexer::lineno() const { 32 | return blifparse_get_lineno(state_); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/blif_lexer.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_LEXER_HPP 2 | #define BLIF_LEXER_HPP 3 | 4 | #include "blifparse.hpp" //For blifparse::Callback 5 | #include "blif_parser.hpp" //For Parser::symbol_type 6 | 7 | namespace blifparse { 8 | 9 | typedef void* yyscan_t; 10 | 11 | class Lexer { 12 | public: 13 | Lexer(FILE* file, Callback& callback); 14 | ~Lexer(); 15 | Parser::symbol_type next_token(); 16 | const char* text() const; 17 | int lineno() const; 18 | private: 19 | yyscan_t state_; 20 | Callback& callback_; 21 | }; 22 | 23 | /* 24 | * The YY_DECL is used by flex to specify the signature of the main 25 | * lexer function. 26 | * 27 | * We re-define it to something reasonable 28 | */ 29 | #undef YY_DECL 30 | #define YY_DECL blifparse::Parser::symbol_type blifparse_lex(yyscan_t yyscanner, blifparse::Callback& callback) 31 | 32 | } //namespace 33 | #endif 34 | -------------------------------------------------------------------------------- /src/blif_lexer.l: -------------------------------------------------------------------------------- 1 | %{ 2 | /* 3 | * Include Files 4 | */ 5 | #include "blifparse.hpp" 6 | #include "blif_common.hpp" 7 | #include "blif_error.hpp" 8 | 9 | #include "blif_lexer.hpp" 10 | 11 | %} 12 | 13 | /* 14 | * Options 15 | */ 16 | 17 | /* track line numbers*/ 18 | %option yylineno 19 | 20 | /* No lexing accross files */ 21 | %option noyywrap 22 | 23 | /* unistd.h doesn't exist on windows */ 24 | %option nounistd 25 | 26 | /* Avoid unused yyunput function warning */ 27 | %option nounput 28 | 29 | /* Avoid unused yyinput function warning */ 30 | %option noinput 31 | 32 | /* isatty() doesn't exist on windows */ 33 | %option never-interactive 34 | 35 | /* no default rule to echo unrecongaized tokens to output */ 36 | %option nodefault 37 | 38 | /*%option bison-bridge*/ 39 | %option reentrant 40 | 41 | /* 42 | * Use a prefix to avoid name clashes with other 43 | * flex lexers 44 | */ 45 | %option prefix="blifparse_" 46 | 47 | /* Common character classes */ 48 | ID_SET [^ \t\r\n\\="] 49 | BACK_SLASH [\\] 50 | WS [ \t] 51 | ENDL (\n|\n\r|\r\n) 52 | 53 | /* Special Parser States */ 54 | %x LATCH 55 | %x NAMES 56 | %x SO_COVER 57 | 58 | /* 59 | * Symbol Definitions 60 | */ 61 | %% 62 | <*>#.*{ENDL} { /* ignore comments, but forward EOL for end of line comments */ 63 | return blifparse::Parser::make_EOL(); 64 | } 65 | ^{WS}*{ENDL} { /* Ignore blank lines. */ } 66 | \\{ENDL}{WS}*{ENDL} { 67 | /* 68 | * Do forward end of line if the last line was a continuation. 69 | * 70 | * Some times line continuations are followed by blank lines (which 71 | * are otherwise ignored). In these cases we *do* want to 72 | * forward EOL, so the parser knows the continued line has finished 73 | */ 74 | return blifparse::Parser::make_EOL(); 75 | } 76 | <*>\\{ENDL} { /* line continuation (don't forward EOL to parser) */ } 77 | {ENDL} { 78 | return blifparse::Parser::make_EOL(); 79 | } 80 | <*>{WS}+ { /* skip white space */ } 81 | <*>\.names { 82 | /* 83 | * To process the single output cover rows of the names directly as symbols 84 | * (rather than as strings) we use a special lexer state. 85 | */ 86 | BEGIN(NAMES); 87 | return blifparse::Parser::make_DOT_NAMES(); 88 | } 89 | <*>\.latch { 90 | /* 91 | * The initial state value of a latch is ambiguous (it chould be 92 | * interpreted as a string or logic value string). So we use 93 | * a special lexer state to capture it. 94 | */ 95 | BEGIN(LATCH); 96 | return blifparse::Parser::make_DOT_LATCH(); 97 | } 98 | <*>\.model { BEGIN(INITIAL); return blifparse::Parser::make_DOT_MODEL(); } 99 | <*>\.subckt { BEGIN(INITIAL); return blifparse::Parser::make_DOT_SUBCKT(); } 100 | <*>\.inputs { BEGIN(INITIAL); return blifparse::Parser::make_DOT_INPUTS(); } 101 | <*>\.outputs { BEGIN(INITIAL); return blifparse::Parser::make_DOT_OUTPUTS(); } 102 | <*>\.end { BEGIN(INITIAL); return blifparse::Parser::make_DOT_END(); } 103 | <*>\.blackbox { BEGIN(INITIAL); return blifparse::Parser::make_DOT_BLACKBOX(); } 104 | 105 | <*>\.conn { BEGIN(INITIAL); return blifparse::Parser::make_DOT_CONN(); /*BLIF extension */} 106 | <*>\.attr { BEGIN(INITIAL); return blifparse::Parser::make_DOT_ATTR(); /*BLIF extension */} 107 | <*>\.param { BEGIN(INITIAL); return blifparse::Parser::make_DOT_PARAM(); /*BLIF extension */} 108 | <*>\.cname { BEGIN(INITIAL); return blifparse::Parser::make_DOT_CNAME(); /*BLIF extension */} 109 | 110 | 111 | = { return blifparse::Parser::make_EQ();} 112 | fe { return blifparse::Parser::make_LATCH_FE(); } 113 | re { return blifparse::Parser::make_LATCH_RE(); } 114 | ah { return blifparse::Parser::make_LATCH_AH(); } 115 | al { return blifparse::Parser::make_LATCH_AL(); } 116 | as { return blifparse::Parser::make_LATCH_AS(); } 117 | NIL { return blifparse::Parser::make_NIL(); } 118 | 0 { return blifparse::Parser::make_LOGIC_FALSE(); } 119 | 1 { return blifparse::Parser::make_LOGIC_TRUE(); } 120 | 2 { return blifparse::Parser::make_LATCH_INIT_2(); } 121 | 3 { return blifparse::Parser::make_LATCH_INIT_3(); } 122 | {ENDL} { 123 | /* 124 | * Latches are only every defined on a single line, 125 | * so when we see the end of a line while in the LATCH 126 | * state we can go back to the regular (INITIAL) state. 127 | */ 128 | BEGIN(INITIAL); return blifparse::Parser::make_EOL(); 129 | } 130 | 0 { return blifparse::Parser::make_LOGIC_FALSE(); } 131 | 1 { return blifparse::Parser::make_LOGIC_TRUE(); } 132 | \- { return blifparse::Parser::make_LOGIC_DONT_CARE(); } 133 | {ENDL} { return blifparse::Parser::make_EOL(); } 134 | {ENDL} { 135 | /* 136 | * Once we reach the end of a line in NAMES state (i.e. the end of a .names line) 137 | * we expect the truth table (in single output cover format) to follow, so we enter 138 | * the SO_COVER state. 139 | */ 140 | BEGIN(SO_COVER); 141 | return blifparse::Parser::make_EOL(); 142 | } 143 | ([\"][^\r\n\"]*[\"])|(({ID_SET}|{BACK_SLASH})*{ID_SET}) { 144 | /* 145 | * There two types of STRING's this 146 | * expression recognizes: 147 | * - Quoted strings, with no string 148 | * escape allowed, no line continuation 149 | * allowed. 150 | * - Unquoted strings. 151 | * 152 | * For the unquoted strings, we allow all 153 | * sorts of characters in regular strings. 154 | * However we need to be careful about line continuations 155 | * in particular, it is possible that we could have a string 156 | * followed by a continuation with no space for this reason, 157 | * we do not allow a continuation (backslash, \\ in escaped 158 | * form in the regex) in the last character of the string. 159 | */ 160 | return blifparse::Parser::make_STRING(blifparse_get_text(yyscanner)); 161 | } 162 | <> { /* If the file has no blank line at the end there will 163 | not be the expected EOL following the last command. 164 | So first time through, return EOL, and subsequently 165 | return 0 (which indicated end of file). This ensures 166 | there will always be an EOL provided to the parser. 167 | However it may also generate a stray EOL if the last 168 | line IS blank - so the parser must handle those correclty. */ 169 | static bool once; return (once = !once) ? blifparse::Parser::make_EOL() : blifparse::Parser::make_EOF(); 170 | } 171 | <*>. { blifparse::blif_error_wrap(callback, blifparse_get_lineno(yyscanner), blifparse_get_text(yyscanner), "Unrecognized character"); } 172 | %% 173 | -------------------------------------------------------------------------------- /src/blif_lexer_fwd.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_LEXER_FWD_H 2 | #define BLIF_LEXER_FWD_H 3 | 4 | //Forward declaration used by parser definition 5 | namespace blifparse { 6 | class Lexer; 7 | } 8 | 9 | #endif 10 | -------------------------------------------------------------------------------- /src/blif_parser.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_PARSER_HPP 2 | #define BLIF_PARSER_HPP 3 | 4 | #include "blif_lexer_fwd.hpp" //Lexer class required for Parser param 5 | 6 | //Required by parser generated header 7 | #ifndef YY_NULLPTR 8 | #define YY_NULLPTR nullptr 9 | #endif 10 | 11 | #include "blif_common.hpp" 12 | #include "blif_parser.gen.hpp" //For the generated Parser class 13 | 14 | #endif 15 | -------------------------------------------------------------------------------- /src/blif_parser.y: -------------------------------------------------------------------------------- 1 | /* C++ parsers require Bison 3 */ 2 | %require "3.0" 3 | %language "C++" 4 | 5 | /* Write-out tokens header file */ 6 | %defines 7 | 8 | /* Use Bison's 'variant' to store values. 9 | * This allows us to use non POD types (e.g. 10 | * with constructors/destrictors), which is 11 | * not possible with the default mode which 12 | * uses unions. 13 | */ 14 | %define api.value.type variant 15 | 16 | /* 17 | * Use the 'complete' symbol type (i.e. variant) 18 | * in the lexer 19 | */ 20 | %define api.token.constructor 21 | 22 | /* 23 | * Add a prefix the make_* functions used to 24 | * create the symbols 25 | */ 26 | %define api.token.prefix {TOKEN_} 27 | 28 | /* 29 | * Use a re-entrant (no global vars) parser 30 | */ 31 | /*%define api.pure full*/ 32 | 33 | /* Wrap everything in our namespace */ 34 | %define api.namespace {blifparse} 35 | 36 | /* Name the parser class */ 37 | %define api.parser.class {Parser} 38 | 39 | /* Match the flex prefix */ 40 | %define api.prefix {blifparse_} 41 | 42 | /* Extra checks for correct usage */ 43 | %define parse.assert 44 | 45 | /* Enable debugging info */ 46 | %define parse.trace 47 | 48 | /* Better error reporting */ 49 | %define parse.error verbose 50 | 51 | /* 52 | * Fixes inaccuracy in verbose error reporting. 53 | * May be slow for some grammars. 54 | */ 55 | /*%define parse.lac full*/ 56 | 57 | /* Track locations */ 58 | /*%locations*/ 59 | 60 | /* Generate a table of token names */ 61 | %token-table 62 | 63 | %lex-param {Lexer& lexer} 64 | %parse-param {Lexer& lexer} 65 | %parse-param {Callback& callback} 66 | 67 | 68 | %code requires { 69 | #include 70 | #include "blifparse.hpp" 71 | #include "blif_lexer_fwd.hpp" 72 | } 73 | 74 | %code top { 75 | #include "blif_lexer.hpp" 76 | //Bison calls blifparse_lex() to get the next token. 77 | //We use the Lexer class as the interface to the lexer, so we 78 | //re-defined the function to tell Bison how to get the next token. 79 | static blifparse::Parser::symbol_type blifparse_lex(blifparse::Lexer& lexer) { 80 | return lexer.next_token(); 81 | } 82 | } 83 | 84 | %{ 85 | 86 | #include 87 | #include "assert.h" 88 | 89 | #include "blifparse.hpp" 90 | #include "blif_common.hpp" 91 | #include "blif_error.hpp" 92 | 93 | using namespace blifparse; 94 | 95 | %} 96 | 97 | /* Declare constant */ 98 | %token DOT_NAMES ".names" 99 | %token DOT_LATCH ".latch" 100 | %token DOT_MODEL ".model" 101 | %token DOT_SUBCKT ".subckt" 102 | %token DOT_INPUTS ".inputs" 103 | %token DOT_OUTPUTS ".outputs" 104 | %token DOT_CLOCK ".clock" 105 | %token DOT_END ".end" 106 | %token DOT_BLACKBOX ".blackbox" 107 | %token LATCH_FE "fe" 108 | %token LATCH_RE "re" 109 | %token LATCH_AH "ah" 110 | %token LATCH_AL "al" 111 | %token LATCH_AS "as" 112 | %token NIL "NIL" 113 | %token LATCH_INIT_2 "2" 114 | %token LATCH_INIT_3 "3" 115 | %token LOGIC_FALSE "0" 116 | %token LOGIC_TRUE "1" 117 | %token LOGIC_DONT_CARE "-" 118 | %token EQ "=" 119 | %token EOL "end-of-line" 120 | %token EOF 0 "end-of-file" 121 | 122 | /*BLIF extensions */ 123 | %token DOT_CONN ".conn" 124 | %token DOT_ATTR ".attr" 125 | %token DOT_PARAM ".param" 126 | %token DOT_CNAME ".cname" 127 | 128 | /* declare variable tokens */ 129 | %token STRING 130 | 131 | /* declare types */ 132 | %type subckt 133 | %type names 134 | %type > string_list 135 | %type > so_cover_row 136 | %type logic_value 137 | %type latch_init 138 | %type latch_control 139 | %type latch_type 140 | 141 | /* BLIF Extensions */ 142 | %type conn 143 | %type cname 144 | %type attr 145 | %type param 146 | 147 | /* Top level rule */ 148 | %start blif_data 149 | 150 | %% 151 | 152 | blif_data: /*empty*/ { } 153 | | blif_data DOT_MODEL STRING EOL { callback.lineno(lexer.lineno()-1); callback.begin_model($3); } 154 | | blif_data DOT_INPUTS string_list EOL { callback.lineno(lexer.lineno()-1); callback.inputs($3); } 155 | | blif_data DOT_OUTPUTS string_list EOL { callback.lineno(lexer.lineno()-1); callback.outputs($3); } 156 | | blif_data names { callback.lineno(lexer.lineno()-1); callback.names($2.nets, $2.so_cover); } 157 | | blif_data subckt EOL { 158 | if($2.ports.size() != $2.nets.size()) { 159 | blif_error_wrap(callback ,lexer.lineno()-1, lexer.text(), 160 | "Mismatched subckt port and net connection(s) size do not match" 161 | " (%zu ports, %zu nets)", $2.ports.size(), $2.nets.size()); 162 | } 163 | callback.lineno(lexer.lineno()-1); 164 | callback.subckt($2.model, $2.ports, $2.nets); 165 | } 166 | | blif_data latch EOL { /*callback already called */ } 167 | | blif_data DOT_BLACKBOX EOL { callback.lineno(lexer.lineno()-1); callback.blackbox(); } 168 | | blif_data DOT_END EOL { callback.lineno(lexer.lineno()-1); callback.end_model(); } 169 | | blif_data conn EOL { callback.lineno(lexer.lineno()-1); callback.conn($2.src, $2.dst); } 170 | | blif_data cname EOL { callback.lineno(lexer.lineno()-1); callback.cname($2.name); } 171 | | blif_data attr EOL { callback.lineno(lexer.lineno()-1); callback.attr($2.name, $2.value); } 172 | | blif_data param EOL { callback.lineno(lexer.lineno()-1); callback.param($2.name, $2.value); } 173 | | blif_data EOL { /* eat end-of-lines */} 174 | ; 175 | 176 | names: DOT_NAMES string_list EOL { $$ = Names(); $$.nets = $2; } 177 | | names so_cover_row EOL { 178 | $$ = std::move($1); 179 | if($$.nets.size() != $2.size()) { 180 | blif_error_wrap(callback, lexer.lineno()-1, lexer.text(), 181 | "Mismatched .names single-output cover row." 182 | " names connected to %zu net(s), but cover row has %zu element(s)", 183 | $$.nets.size(), $2.size()); 184 | } 185 | $$.so_cover.push_back($2); 186 | } 187 | ; 188 | 189 | subckt: DOT_SUBCKT STRING { $$ = SubCkt(); $$.model = $2; } 190 | | subckt STRING EQ STRING { $$ = std::move($1); $$.ports.push_back($2); $$.nets.push_back($4); } 191 | ; 192 | 193 | latch: DOT_LATCH STRING STRING { 194 | //Input and output only 195 | callback.lineno(lexer.lineno()); 196 | callback.latch($2, $3, LatchType::UNSPECIFIED, "", LogicValue::UNKOWN); 197 | } 198 | | DOT_LATCH STRING STRING latch_type latch_control { 199 | //Input, output, type and control 200 | callback.lineno(lexer.lineno()); 201 | callback.latch($2, $3, $4, $5, LogicValue::UNKOWN); 202 | } 203 | | DOT_LATCH STRING STRING latch_type latch_control latch_init { 204 | //Input, output, type, control and init-value 205 | callback.lineno(lexer.lineno()); 206 | callback.latch($2, $3, $4, $5, $6); 207 | } 208 | | DOT_LATCH STRING STRING latch_init { 209 | //Input, output, and init-value 210 | callback.lineno(lexer.lineno()); 211 | callback.latch($2, $3, LatchType::UNSPECIFIED, "", $4); 212 | } 213 | ; 214 | 215 | latch_init: LOGIC_TRUE { $$ = LogicValue::TRUE; } 216 | | LOGIC_FALSE { $$ = LogicValue::FALSE; } 217 | | LATCH_INIT_2 { $$ = LogicValue::DONT_CARE; } 218 | | LATCH_INIT_3 { $$ = LogicValue::UNKOWN; } 219 | ; 220 | 221 | latch_control: STRING { $$ = $1;} 222 | | NIL { $$ = ""; } 223 | ; 224 | 225 | latch_type: LATCH_FE { $$ = LatchType::FALLING_EDGE; } 226 | | LATCH_RE { $$ = LatchType::RISING_EDGE; } 227 | | LATCH_AH { $$ = LatchType::ACTIVE_HIGH; } 228 | | LATCH_AL { $$ = LatchType::ACTIVE_LOW; } 229 | | LATCH_AS { $$ = LatchType::ASYNCHRONOUS; } 230 | ; 231 | 232 | so_cover_row: logic_value { $$ = std::vector(); $$.push_back($1); } 233 | | so_cover_row logic_value { $$ = std::move($1); $$.push_back($2); } 234 | ; 235 | 236 | logic_value: LOGIC_TRUE { $$ = LogicValue::TRUE; } 237 | | LOGIC_FALSE { $$ = LogicValue::FALSE; } 238 | | LOGIC_DONT_CARE { $$ = LogicValue::DONT_CARE; } 239 | ; 240 | 241 | string_list: /*empty*/ { $$ = std::vector(); } 242 | | string_list STRING { $$ = std::move($1); $$.push_back($2); } 243 | ; 244 | 245 | /* 246 | * BLIF Extensions 247 | */ 248 | conn: DOT_CONN STRING STRING { $$ = Conn(); $$.src = $2; $$.dst = $3; } 249 | cname: DOT_CNAME STRING { $$ = Cname(); $$.name = $2; } 250 | attr: DOT_ATTR STRING STRING { $$ = Attr(); $$.name = $2; $$.value = $3; } 251 | | DOT_ATTR STRING { $$ = Attr(); $$.name = $2; $$.value = ""; } 252 | param: DOT_PARAM STRING STRING { $$ = Param(); $$.name = $2; $$.value = $3; } 253 | | DOT_PARAM STRING { $$ = Param(); $$.name = $2; $$.value = ""; } 254 | 255 | %% 256 | 257 | void blifparse::Parser::error(const std::string& msg) { 258 | blif_error_wrap(callback, lexer.lineno(), lexer.text(), msg.c_str()); 259 | } 260 | -------------------------------------------------------------------------------- /src/blif_pretty_print.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "blif_pretty_print.hpp" 5 | 6 | namespace blifparse { 7 | 8 | void BlifPrettyPrinter::start_parse() { 9 | //Pass 10 | } 11 | 12 | void BlifPrettyPrinter::finish_parse() { 13 | //Pass 14 | } 15 | 16 | void BlifPrettyPrinter::begin_model(std::string model_name) { 17 | if(print_file_line_) { 18 | printf("#%s:%d\n", filename_.c_str(), lineno_); 19 | } 20 | printf(".model %s\n", model_name.c_str()); 21 | } 22 | 23 | void BlifPrettyPrinter::inputs(std::vector input_conns) { 24 | if(print_file_line_) { 25 | printf("#%s:%d\n", filename_.c_str(), lineno_); 26 | } 27 | printf(".inputs \\\n"); 28 | ++indent_level_; 29 | for(size_t i = 0; i < input_conns.size(); ++i) { 30 | printf("%s%s", indent().c_str(), input_conns[i].c_str()); 31 | if(i != input_conns.size() - 1) { 32 | printf(" \\"); 33 | } 34 | printf("\n"); 35 | } 36 | --indent_level_; 37 | } 38 | 39 | void BlifPrettyPrinter::outputs(std::vector output_conns) { 40 | if(print_file_line_) { 41 | printf("#%s:%d\n", filename_.c_str(), lineno_); 42 | } 43 | printf(".outputs \\\n"); 44 | 45 | ++indent_level_; 46 | for(size_t i = 0; i < output_conns.size(); ++i) { 47 | printf("%s%s", indent().c_str(), output_conns[i].c_str()); 48 | if(i != output_conns.size() - 1) { 49 | printf(" \\"); 50 | } 51 | printf("\n"); 52 | } 53 | --indent_level_; 54 | } 55 | 56 | void BlifPrettyPrinter::names(std::vector nets, std::vector> so_cover) { 57 | printf("\n"); 58 | if(print_file_line_) { 59 | printf("#%s:%d\n", filename_.c_str(), lineno_); 60 | } 61 | printf(".names "); 62 | for(size_t i = 0; i < nets.size(); ++i) { 63 | printf("%s", nets[i].c_str()); 64 | if(i != nets.size() - 1) { 65 | printf(" "); 66 | } 67 | } 68 | printf("\n"); 69 | 70 | for(const auto& so_row : so_cover) { 71 | for(size_t i = 0; i < so_row.size(); ++i) { 72 | switch(so_row[i]) { 73 | case LogicValue::FALSE: printf("0"); break; 74 | case LogicValue::TRUE: printf("1"); break; 75 | case LogicValue::DONT_CARE: printf("-"); break; 76 | default: assert(false); 77 | } 78 | if(i == so_row.size() - 2) { 79 | printf(" "); 80 | } 81 | } 82 | printf("\n"); 83 | } 84 | } 85 | 86 | void BlifPrettyPrinter::latch(std::string input, std::string output, LatchType type, std::string control, LogicValue init) { 87 | printf("\n"); 88 | if(print_file_line_) { 89 | printf("#%s:%d\n", filename_.c_str(), lineno_); 90 | } 91 | printf(".latch \\\n"); 92 | 93 | ++indent_level_; 94 | printf("%s%s \\\n", indent().c_str(), input.c_str()); 95 | printf("%s%s \\\n", indent().c_str(), output.c_str()); 96 | switch(type) { 97 | case LatchType::RISING_EDGE: printf("%sre \\\n", indent().c_str()); break; 98 | case LatchType::FALLING_EDGE: printf("%sfe \\\n", indent().c_str()); break; 99 | case LatchType::ACTIVE_HIGH: printf("%sah \\\n", indent().c_str()); break; 100 | case LatchType::ACTIVE_LOW: printf("%sal \\\n", indent().c_str()); break; 101 | case LatchType::ASYNCHRONOUS: printf("%sas \\\n", indent().c_str()); break; 102 | case LatchType::UNSPECIFIED: break; 103 | default: assert(false); 104 | 105 | } 106 | if(control.empty()) { 107 | printf("%sNIL \\\n", indent().c_str()); 108 | } else { 109 | printf("%s%s \\\n", indent().c_str(), control.c_str()); 110 | } 111 | switch(init) { 112 | case LogicValue::FALSE: printf("%s0", indent().c_str()); break; 113 | case LogicValue::TRUE: printf("%s1", indent().c_str()); break; 114 | case LogicValue::DONT_CARE: printf("%s2", indent().c_str()); break; 115 | case LogicValue::UNKOWN: printf("%s3", indent().c_str()); break; 116 | default: assert(false); 117 | } 118 | --indent_level_; 119 | } 120 | 121 | void BlifPrettyPrinter::subckt(std::string model, std::vector ports, std::vector nets) { 122 | printf("\n"); 123 | if(print_file_line_) { 124 | printf("#%s:%d\n", filename_.c_str(), lineno_); 125 | } 126 | printf(".subckt %s \\\n", model.c_str()); 127 | 128 | ++indent_level_; 129 | assert(ports.size() == nets.size()); 130 | for(size_t i = 0; i < ports.size(); i++) { 131 | printf("%s%s=%s", indent().c_str(), ports[i].c_str(), nets[i].c_str()); 132 | 133 | if(i != ports.size() - 1) { 134 | printf(" \\"); 135 | } 136 | 137 | printf("\n"); 138 | } 139 | --indent_level_; 140 | } 141 | 142 | void BlifPrettyPrinter::blackbox() { 143 | if(print_file_line_) { 144 | printf("#%s:%d\n", filename_.c_str(), lineno_); 145 | } 146 | printf(".blackbox\n"); 147 | } 148 | 149 | void BlifPrettyPrinter::end_model() { 150 | if(print_file_line_) { 151 | printf("#%s:%d\n", filename_.c_str(), lineno_); 152 | } 153 | printf(".end\n"); 154 | } 155 | 156 | void BlifPrettyPrinter::conn(std::string src, std::string dst) { 157 | if(print_file_line_) { 158 | printf("#%s:%d\n", filename_.c_str(), lineno_); 159 | } 160 | printf(".conn %s %s\n", src.c_str(), dst.c_str()); 161 | 162 | } 163 | 164 | void BlifPrettyPrinter::cname(std::string cell_name) { 165 | if(print_file_line_) { 166 | printf("#%s:%d\n", filename_.c_str(), lineno_); 167 | } 168 | printf(".cname %s\n", cell_name.c_str()); 169 | } 170 | 171 | void BlifPrettyPrinter::attr(std::string name, std::string value) { 172 | if(print_file_line_) { 173 | printf("#%s:%d\n", filename_.c_str(), lineno_); 174 | } 175 | printf(".attr %s %s\n", name.c_str(), value.c_str()); 176 | } 177 | 178 | void BlifPrettyPrinter::param(std::string name, std::string value) { 179 | if(print_file_line_) { 180 | printf("#%s:%d\n", filename_.c_str(), lineno_); 181 | } 182 | printf(".param %s %s\n", name.c_str(), value.c_str()); 183 | } 184 | 185 | void BlifPrettyPrinter::filename(std::string fname) { 186 | filename_ = fname; 187 | } 188 | 189 | void BlifPrettyPrinter::lineno(int line_num) { 190 | lineno_ = line_num; 191 | } 192 | 193 | std::string BlifPrettyPrinter::indent() { 194 | std::string indent_str; 195 | for(size_t i = 0; i < indent_level_; ++i) { 196 | indent_str += " "; 197 | } 198 | return indent_str; 199 | } 200 | 201 | } 202 | -------------------------------------------------------------------------------- /src/blif_pretty_print.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIF_PRETTY_PRINT 2 | #define BLIF_PRETTY_PRINT 3 | #include 4 | #include "blifparse.hpp" 5 | 6 | namespace blifparse { 7 | 8 | //An example callback which pretty-prints to stdout 9 | //the BLIF which is being parsed 10 | class BlifPrettyPrinter : public Callback { 11 | public: 12 | BlifPrettyPrinter(bool print_file_line=false) 13 | : print_file_line_(print_file_line) {} 14 | 15 | void start_parse() override; 16 | void filename(std::string fname) override; 17 | void lineno(int line_num) override; 18 | void begin_model(std::string model_name) override; 19 | void inputs(std::vector inputs) override; 20 | void outputs(std::vector outputs) override; 21 | 22 | void names(std::vector nets, std::vector> so_cover) override; 23 | 24 | void latch(std::string input, std::string output, LatchType type, std::string control, LogicValue init) override; 25 | 26 | void subckt(std::string model, std::vector ports, std::vector nets) override; 27 | 28 | void blackbox() override; 29 | 30 | void end_model() override; 31 | 32 | //BLIF Extensions 33 | void conn(std::string src, std::string dst) override; 34 | void cname(std::string cell_name) override; 35 | void attr(std::string name, std::string value) override; 36 | void param(std::string name, std::string value) override; 37 | 38 | void finish_parse() override; 39 | 40 | void parse_error(const int curr_lineno, const std::string& near_text, const std::string& msg) override { 41 | fprintf(stderr, "Custom Error at line %d near '%s': %s\n", curr_lineno, near_text.c_str(), msg.c_str()); 42 | had_error_ = true; 43 | } 44 | 45 | bool had_error() { return had_error_; } 46 | 47 | private: 48 | std::string indent(); 49 | 50 | size_t indent_level_ = 0; 51 | 52 | std::string filename_ = ""; 53 | int lineno_ = 0; 54 | bool print_file_line_ = false; 55 | bool had_error_ = false; 56 | }; 57 | 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /src/blifparse.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "blifparse.hpp" 4 | 5 | #include "blif_common.hpp" 6 | #include "blif_lexer.hpp" 7 | #include "blif_error.hpp" 8 | 9 | 10 | namespace blifparse { 11 | 12 | //.conn [Extended BLIF] 13 | void Callback::conn(std::string /*src*/, std::string /*dst*/) { 14 | parse_error(-1, ".conn", "Unsupported BLIF extension"); 15 | } 16 | 17 | //.cname [Extended BLIF] 18 | void Callback::cname(std::string /*cell_name*/) { 19 | parse_error(-1, ".cname", "Unsupported BLIF extension"); 20 | } 21 | 22 | //.attr [Extended BLIF] 23 | void Callback::attr(std::string /*name*/, std::string /*value*/) { 24 | parse_error(-1, ".attr", "Unsupported BLIF extension"); 25 | } 26 | 27 | //.param [Extended BLIF] 28 | void Callback::param(std::string /*name*/, std::string /*value*/) { 29 | parse_error(-1, ".param", "Unsupported BLIF extension"); 30 | } 31 | 32 | /* 33 | * Given a filename parses the file as an BLIF file 34 | * and returns a pointer to a struct containing all 35 | * the blif commands. See blif.h for data structure 36 | * detials. 37 | */ 38 | void blif_parse_filename(std::string filename, Callback& callback) { 39 | blif_parse_filename(filename.c_str(), callback); 40 | } 41 | 42 | void blif_parse_filename(const char* filename, Callback& callback) { 43 | FILE* infile = std::fopen(filename, "r"); 44 | if(infile != NULL) { 45 | //Parse the file 46 | blif_parse_file(infile, callback, filename); 47 | 48 | std::fclose(infile); 49 | } else { 50 | blif_error_wrap(callback, 0, "", "Could not open file '%s'.\n", filename); 51 | } 52 | } 53 | 54 | void blif_parse_file(FILE* blif_file, Callback& callback, const char* filename) { 55 | 56 | //Initialize the lexer 57 | Lexer lexer(blif_file, callback); 58 | 59 | //Setup the parser + lexer 60 | Parser parser(lexer, callback); 61 | 62 | //Just before parsing starts 63 | callback.start_parse(); 64 | 65 | //Tell the caller the file name 66 | callback.filename(filename); 67 | 68 | //Do the actual parse 69 | int error = parser.parse(); 70 | if(error) { 71 | blif_error_wrap(callback, 0, "", "File failed to parse.\n"); 72 | } 73 | 74 | //Finished parsing 75 | callback.finish_parse(); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/blifparse.hpp: -------------------------------------------------------------------------------- 1 | #ifndef BLIFPARSE_H 2 | #define BLIFPARSE_H 3 | /* 4 | * libblifparse - Kevin E. Murray 2016 5 | * 6 | * Released under MIT License see LICENSE.txt for details. 7 | * 8 | * OVERVIEW 9 | * -------------------------- 10 | * This library provides support for parsing Berkely Logic Interchange Format (BLIF) 11 | * files. It supporst the features required to handle basic netlists (e.g. .model, 12 | * .inputs, .outputs, .subckt, .names, .latch) 13 | * 14 | * USAGE 15 | * -------------------------- 16 | * Define a callback derived from the blifparse::Callback interface, and pass it 17 | * to one of the blifparse::blif_parse_*() functions. 18 | * 19 | * The parser will then call the various callback methods as it encouters the 20 | * appropriate parts of the netlist. 21 | * 22 | * See main.cpp and blif_pretty_print.hpp for example usage. 23 | * 24 | */ 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | namespace blifparse { 32 | /* 33 | * Data structure Forward declarations 34 | */ 35 | enum class LogicValue; 36 | enum class LatchType; 37 | 38 | class Callback { 39 | public: 40 | virtual ~Callback() {} 41 | 42 | //Start of parsing 43 | virtual void start_parse() = 0; 44 | 45 | //Sets current filename 46 | virtual void filename(std::string fname) = 0; 47 | 48 | //Sets current line number 49 | virtual void lineno(int line_num) = 0; 50 | 51 | //Start of a .model 52 | virtual void begin_model(std::string model_name) = 0; 53 | 54 | //.inputs 55 | virtual void inputs(std::vector inputs) = 0; 56 | 57 | //.outputs 58 | virtual void outputs(std::vector outputs) = 0; 59 | 60 | //.names 61 | virtual void names(std::vector nets, std::vector> so_cover) = 0; 62 | 63 | //.latch 64 | virtual void latch(std::string input, std::string output, LatchType type, std::string control, LogicValue init) = 0; 65 | 66 | //.subckt 67 | virtual void subckt(std::string model, std::vector ports, std::vector nets) = 0; 68 | 69 | //.blackbox 70 | virtual void blackbox() = 0; 71 | 72 | //.end (of a .model) 73 | virtual void end_model() = 0; 74 | 75 | //.conn [Extended BLIF, produces an error if not overriden] 76 | virtual void conn(std::string src, std::string dst); 77 | 78 | //.cname [Extended BLIF, produces an error if not overriden] 79 | virtual void cname(std::string cell_name); 80 | 81 | //.attr [Extended BLIF, produces an error if not overriden] 82 | virtual void attr(std::string name, std::string value); 83 | 84 | //.param [Extended BLIF, produces an error if not overriden] 85 | virtual void param(std::string name, std::string value); 86 | 87 | //End of parsing 88 | virtual void finish_parse() = 0; 89 | 90 | //Error during parsing 91 | virtual void parse_error(const int curr_lineno, const std::string& near_text, const std::string& msg) = 0; 92 | }; 93 | 94 | 95 | /* 96 | * External functions for loading an SDC file 97 | */ 98 | void blif_parse_filename(std::string filename, Callback& callback); 99 | void blif_parse_filename(const char* filename, Callback& callback); 100 | 101 | //Loads from 'blif'. 'filename' only used to pass a filename to callback and can be left unspecified 102 | void blif_parse_file(FILE* blif, Callback& callback, const char* filename=""); 103 | 104 | /* 105 | * Enumerations 106 | */ 107 | enum class LogicValue { 108 | FALSE = 0, //Logic zero 109 | TRUE = 1, //Logic one 110 | DONT_CARE, //Don't care 111 | UNKOWN //Unkown (e.g. latch initial state) 112 | }; 113 | 114 | enum class LatchType { 115 | FALLING_EDGE, 116 | RISING_EDGE, 117 | ACTIVE_HIGH, 118 | ACTIVE_LOW, 119 | ASYNCHRONOUS, 120 | UNSPECIFIED //If no type is specified 121 | }; 122 | 123 | } //namespace 124 | 125 | #endif 126 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "blifparse.hpp" 5 | #include "blif_pretty_print.hpp" 6 | 7 | using namespace blifparse; 8 | 9 | int exit_code = 0; 10 | 11 | class NoOpCallback : public Callback { 12 | //A No-op version of the callback 13 | public: 14 | void start_parse() override {} 15 | 16 | void filename(std::string /*fname*/) override {} 17 | void lineno(int /*line_num*/) override {} 18 | 19 | void begin_model(std::string /*model_name*/) override {} 20 | void inputs(std::vector /*inputs*/) override {} 21 | void outputs(std::vector /*outputs*/) override {} 22 | 23 | void names(std::vector /*nets*/, std::vector> /*so_cover*/) override {} 24 | void latch(std::string /*input*/, std::string /*output*/, LatchType /*type*/, std::string /*control*/, LogicValue /*init*/) override {} 25 | void subckt(std::string /*model*/, std::vector /*ports*/, std::vector /*nets*/) override {} 26 | void blackbox() override {} 27 | 28 | void end_model() override {} 29 | 30 | void finish_parse() override {} 31 | 32 | void parse_error(const int curr_lineno, const std::string& near_text, const std::string& msg) override { 33 | fprintf(stderr, "Custom Error at line %d near '%s': %s\n", curr_lineno, near_text.c_str(), msg.c_str()); 34 | had_error_ = true; 35 | } 36 | 37 | bool had_error() { return had_error_ = true; } 38 | 39 | private: 40 | bool had_error_ = false; 41 | }; 42 | 43 | int main(int argc, char **argv) { 44 | if(argc != 2) { 45 | fprintf(stderr, "Usage: %s filename.blif\n", argv[0]); 46 | fprintf(stderr, "\n"); 47 | fprintf(stderr, "Reads in an blif file into internal data structures\n"); 48 | fprintf(stderr, "and then prints it out\n"); 49 | exit(1); 50 | } 51 | 52 | //Parse the file 53 | blifparse::BlifPrettyPrinter callback(true); 54 | //NoOpCallback callback; 55 | blif_parse_filename(argv[1], callback); 56 | 57 | if(callback.had_error()) { 58 | return 1; 59 | } else { 60 | return 0; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /test/eblif/ex5p.blif: -------------------------------------------------------------------------------- 1 | .model top 2 | .inputs i_7_ i_5_ i_6_ i_3_ i_4_ i_1_ i_2_ i_0_ 3 | .outputs o_1_ o_19_ o_2_ o_0_ o_29_ o_60_ o_39_ o_38_ o_25_ o_12_ o_37_ o_26_ \ 4 | o_11_ o_50_ o_36_ o_27_ o_14_ o_35_ o_28_ o_13_ o_34_ o_21_ o_16_ o_40_ o_33_ \ 5 | o_22_ o_15_ o_32_ o_23_ o_18_ o_31_ o_24_ o_17_ o_56_ o_43_ o_30_ o_55_ o_44_ \ 6 | o_58_ o_41_ o_57_ o_42_ o_20_ o_52_ o_47_ o_51_ o_48_ o_54_ o_45_ o_10_ o_53_ \ 7 | o_46_ o_61_ o_9_ o_62_ o_49_ o_7_ o_8_ o_5_ o_59_ o_6_ o_3_ o_4_ 8 | .names [3179] [3180] [3184] o_1_ 9 | 1-- 1 10 | -1- 1 11 | --1 1 12 | .names n_n744 [248] n_n0 [71] o_19_ 13 | 1--- 1 14 | -1-- 1 15 | --11 1 16 | .names [3188] [3189] [3190] [3191] o_2_ 17 | 1--- 1 18 | -1-- 1 19 | --1- 1 20 | ---1 1 21 | .names [3204] [3205] [3209] o_0_ 22 | 1-- 1 23 | -1- 1 24 | --1 1 25 | .names i_7_ i_6_ n_n0 n_n7 o_29_ 26 | 1011 1 27 | .names [3266] [3267] [3268] [3269] o_60_ 28 | 1--- 1 29 | -1-- 1 30 | --1- 1 31 | ---1 1 32 | .names n_n136 [3332] [3333] [3334] o_39_ 33 | 1--- 1 34 | -1-- 1 35 | --1- 1 36 | ---1 1 37 | .names [3377] [3378] [3381] o_38_ 38 | 1-- 1 39 | -1- 1 40 | --1 1 41 | .names i_7_ i_6_ n_n7 n_n2 o_25_ 42 | 0111 1 43 | .names i_7_ i_6_ n_n5 n_n8 o_12_ 44 | 1111 1 45 | .names [3417] [3418] [3424] [3428] o_37_ 46 | 1--- 1 47 | -1-- 1 48 | --1- 1 49 | ---1 1 50 | .names n_n7 n_n5 n_n17 n_n19 o_26_ 51 | 111- 1 52 | 1-11 1 53 | .names i_7_ i_6_ n_n6 n_n8 o_11_ 54 | 1111 1 55 | .names [3452] [3453] [3454] [3455] o_50_ 56 | 1--- 1 57 | -1-- 1 58 | --1- 1 59 | ---1 1 60 | .names [339] [3480] [3481] [3482] o_36_ 61 | 1--- 1 62 | -1-- 1 63 | --1- 1 64 | ---1 1 65 | .names i_7_ i_6_ n_n7 n_n3 o_27_ 66 | 0111 1 67 | .names i_7_ i_6_ n_n4 n_n12 o_14_ 68 | 1111 1 69 | .names [339] [3502] [3503] o_35_ 70 | 1-- 1 71 | -1- 1 72 | --1 1 73 | .names i_7_ i_6_ n_n5 n_n11 o_28_ 74 | 1111 1 75 | .names i_7_ i_6_ n_n2 n_n12 o_13_ 76 | 1111 1 77 | .names n_n136 [3526] [3527] [3528] o_34_ 78 | 1--- 1 79 | -1-- 1 80 | --1- 1 81 | ---1 1 82 | .names i_7_ i_6_ n_n4 n_n11 o_21_ 83 | 1011 1 84 | 0011 1 85 | .names i_7_ i_6_ n_n6 n_n12 o_16_ 86 | 1111 1 87 | .names [3566] [3567] [3568] [3569] o_40_ 88 | 1--- 1 89 | -1-- 1 90 | --1- 1 91 | ---1 1 92 | .names [3598] [3599] [3600] [3601] o_33_ 93 | 1--- 1 94 | -1-- 1 95 | --1- 1 96 | ---1 1 97 | .names n_n7 n_n4 n_n11 n_n17 o_22_ 98 | 11-1 1 99 | -111 1 100 | .names i_7_ i_6_ n_n3 n_n12 o_15_ 101 | 1111 1 102 | .names [3614] [3615] [3618] o_32_ 103 | 1-- 1 104 | -1- 1 105 | --1 1 106 | .names n_n1017 [3619] o_23_ 107 | 1- 1 108 | -1 1 109 | .names i_7_ i_6_ n_n13 n_n1 o_18_ 110 | 1111 1 111 | 0111 1 112 | 1011 1 113 | 0011 1 114 | .names [318] [3605] [3632] [3635] o_31_ 115 | 1--- 1 116 | -1-- 1 117 | --1- 1 118 | ---1 1 119 | .names i_7_ i_6_ n_n0 n_n7 o_24_ 120 | 0111 1 121 | .names [180] [3636] o_17_ 122 | 1- 1 123 | -1 1 124 | .names [322] [3639] [3660] [3663] o_56_ 125 | 1--- 1 126 | -1-- 1 127 | --1- 1 128 | ---1 1 129 | .names n_n371 [3705] [3706] [3710] o_43_ 130 | 1--- 1 131 | -1-- 1 132 | --1- 1 133 | ---1 1 134 | .names i_7_ i_6_ n_n7 n_n19 o_30_ 135 | 1111 1 136 | .names [3730] [3731] [3732] [3733] o_55_ 137 | 1--- 1 138 | -1-- 1 139 | --1- 1 140 | ---1 1 141 | .names [339] [3743] [3744] [3745] o_44_ 142 | 1--- 1 143 | -1-- 1 144 | --1- 1 145 | ---1 1 146 | .names [3763] [3764] [3767] o_58_ 147 | 1-- 1 148 | -1- 1 149 | --1 1 150 | .names [321] [322] [3790] [3795] o_41_ 151 | 1--- 1 152 | -1-- 1 153 | --1- 1 154 | ---1 1 155 | .names [3829] [3830] [3831] [3832] o_57_ 156 | 1--- 1 157 | -1-- 1 158 | --1- 1 159 | ---1 1 160 | .names [314] [3876] [3882] [3885] o_42_ 161 | 1--- 1 162 | -1-- 1 163 | --1- 1 164 | ---1 1 165 | .names i_7_ i_6_ n_n7 n_n4 o_20_ 166 | 1011 1 167 | 0011 1 168 | .names [3908] [3909] [3910] [3911] o_52_ 169 | 1--- 1 170 | -1-- 1 171 | --1- 1 172 | ---1 1 173 | .names [3921] [3922] [3925] [3928] o_47_ 174 | 1--- 1 175 | -1-- 1 176 | --1- 1 177 | ---1 1 178 | .names [3966] [3967] [3968] [3969] o_51_ 179 | 1--- 1 180 | -1-- 1 181 | --1- 1 182 | ---1 1 183 | .names n_n476 [263] [264] [3986] o_48_ 184 | 1--- 1 185 | -1-- 1 186 | --1- 1 187 | ---1 1 188 | .names [4013] [4014] [4015] [4016] o_54_ 189 | 1--- 1 190 | -1-- 1 191 | --1- 1 192 | ---1 1 193 | .names [137] n_n883 [3355] [4031] o_45_ 194 | 1--- 1 195 | -1-- 1 196 | --1- 1 197 | ---1 1 198 | .names n_n17 n_n3 n_n8 n_n12 o_10_ 199 | 111- 1 200 | 11-1 1 201 | .names [4055] [4056] [4057] [4058] o_53_ 202 | 1--- 1 203 | -1-- 1 204 | --1- 1 205 | ---1 1 206 | .names [263] [4068] [4069] o_46_ 207 | 1-- 1 208 | -1- 1 209 | --1 1 210 | .names [3344] [3345] [4093] [4097] o_61_ 211 | 1--- 1 212 | -1-- 1 213 | --1- 1 214 | ---1 1 215 | .names i_7_ i_6_ n_n7 n_n1 o_9_ 216 | 1111 1 217 | .names [267] [347] [4108] [4112] o_62_ 218 | 1--- 1 219 | -1-- 1 220 | --1- 1 221 | ---1 1 222 | .names n_n476 [263] [4117] o_49_ 223 | 1-- 1 224 | -1- 1 225 | --1 1 226 | .names i_7_ i_6_ n_n2 n_n8 o_7_ 227 | 1111 1 228 | .names i_7_ i_6_ n_n19 n_n8 o_8_ 229 | 1111 1 230 | .names [4126] [4127] [4128] [4129] o_5_ 231 | 1--- 1 232 | -1-- 1 233 | --1- 1 234 | ---1 1 235 | .names [4160] [4161] [4162] [4163] o_59_ 236 | 1--- 1 237 | -1-- 1 238 | --1- 1 239 | ---1 1 240 | .names i_7_ i_6_ n_n11 n_n1 o_6_ 241 | 1011 1 242 | 0011 1 243 | .names [4166] [4167] [4168] [4169] o_4_ 244 | 1--- 1 245 | -1-- 1 246 | --1- 1 247 | ---1 1 248 | .names i_7_ i_6_ n_n7 n_n6 n_n1154 249 | 0011 1 250 | .names i_7_ i_6_ n_n7 n_n3 n_n1245 251 | 0011 1 252 | .names i_7_ i_6_ n_n7 n_n4 n_n1215 253 | 0011 1 254 | .names i_7_ i_6_ n_n7 n_n2 n_n1274 255 | 0011 1 256 | .names i_7_ i_6_ n_n7 n_n1 n_n1305 257 | 0011 1 258 | .names i_7_ i_6_ n_n0 n_n10 n_n744 259 | 1111 1 260 | 0111 1 261 | 1011 1 262 | .names i_7_ i_6_ n_n0 n_n9 [248] 263 | 1011 1 264 | 0011 1 265 | .names i_7_ i_6_ n_n19 n_n8 n_n1121 266 | 0011 1 267 | .names i_7_ i_6_ n_n5 n_n8 n_n1180 268 | 0011 1 269 | .names i_7_ i_6_ n_n4 n_n8 n_n1211 270 | 0011 1 271 | .names i_7_ i_6_ n_n2 n_n8 n_n1271 272 | 0011 1 273 | .names i_7_ i_6_ n_n1 n_n8 n_n1302 274 | 0011 1 275 | .names i_7_ i_6_ n_n3 n_n8 [246] 276 | 0011 1 277 | .names i_7_ i_6_ n_n6 n_n8 [354] 278 | 0011 1 279 | .names i_7_ i_6_ n_n5 n_n11 n_n1168 280 | 1011 1 281 | .names i_7_ i_6_ n_n0 n_n11 n_n1321 282 | 0011 1 283 | .names i_7_ i_6_ n_n5 n_n11 n_n1169 284 | 0011 1 285 | .names i_7_ i_6_ n_n11 n_n19 [73] 286 | 1011 1 287 | 0011 1 288 | .names i_7_ i_6_ n_n7 n_n6 [92] 289 | 1011 1 290 | 0011 1 291 | .names i_7_ i_6_ n_n6 n_n11 [93] 292 | 1011 1 293 | 0011 1 294 | .names i_7_ i_6_ n_n7 n_n19 [94] 295 | 1011 1 296 | 0011 1 297 | .names i_7_ i_6_ n_n7 n_n3 [146] 298 | 1011 1 299 | 0011 1 300 | .names i_7_ i_6_ n_n2 n_n11 [147] 301 | 1011 1 302 | 0011 1 303 | .names i_7_ i_6_ n_n7 n_n5 [186] 304 | 1011 1 305 | 0011 1 306 | .names i_7_ i_6_ n_n7 n_n2 [208] 307 | 1011 1 308 | 0011 1 309 | .names i_7_ i_6_ n_n7 n_n1 [249] 310 | 1011 1 311 | 0011 1 312 | .names i_1_ i_2_ i_0_ n_n0 313 | 000 1 314 | .names i_7_ i_6_ n_n19 n_n8 n_n1120 315 | 1011 1 316 | .names n_n1083 [236] [3213] n_n1008 317 | 1-- 1 318 | -1- 1 319 | --1 1 320 | .names n_n17 n_n19 n_n12 [163] n_n1009 321 | -1-1 1 322 | 111- 1 323 | .names i_7_ i_6_ n_n6 n_n18 n_n872 324 | 1111 1 325 | 0111 1 326 | 1011 1 327 | .names i_7_ i_6_ n_n4 n_n18 n_n958 328 | 0111 1 329 | 1011 1 330 | 0011 1 331 | .names i_7_ i_6_ n_n7 n_n4 n_n949 332 | 1111 1 333 | 0111 1 334 | 1011 1 335 | .names n_n6 n_n1137 n_n14 n_n12 [108] 336 | -1-- 1 337 | 1-11 1 338 | .names [85] n_n1021 n_n1020 [115] 339 | 1-- 1 340 | -1- 1 341 | --1 1 342 | .names n_n6 n_n15 n_n12 n_n1136 [152] 343 | ---1 1 344 | 111- 1 345 | .names n_n5 n_n864 [69] [187] 346 | -1- 1 347 | 1-1 1 348 | .names n_n602 n_n1022 n_n1298 [3218] [192] 349 | 1--- 1 350 | -1-- 1 351 | --1- 1 352 | ---1 1 353 | .names i_7_ i_6_ n_n6 n_n8 [222] 354 | 1111 1 355 | 0111 1 356 | 1011 1 357 | 0011 1 358 | .names n_n2 n_n930 [72] [226] 359 | -1- 1 360 | 1-1 1 361 | .names [104] n_n1226 [77] [228] 362 | 1-- 1 363 | -1- 1 364 | --1 1 365 | .names n_n3 [70] [3221] [3222] [240] 366 | --1- 1 367 | ---1 1 368 | 11-- 1 369 | .names n_n1197 [88] n_n955 [3225] [252] 370 | 1--- 1 371 | -1-- 1 372 | --1- 1 373 | ---1 1 374 | .names n_n950 n_n1208 [551] [280] 375 | 1-- 1 376 | -1- 1 377 | --1 1 378 | .names o_18_ n_n1271 [254] [269] [301] 379 | 1--- 1 380 | -1-- 1 381 | --1- 1 382 | ---1 1 383 | .names n_n5 [194] n_n859 [72] [324] 384 | -1-- 1 385 | --1- 1 386 | 1--1 1 387 | .names n_n1121 [94] [134] [327] 388 | 1-- 1 389 | -1- 1 390 | --1 1 391 | .names n_n387 [3237] [3238] [330] 392 | 1-- 1 393 | -1- 1 394 | --1 1 395 | .names [147] [300] [127] [331] 396 | 1-- 1 397 | -1- 1 398 | --1 1 399 | .names n_n6 n_n1133 [69] [3239] [346] 400 | -1-- 1 401 | ---1 1 402 | 1-1- 1 403 | .names i_7_ i_6_ n_n4 n_n12 n_n1193 404 | 0111 1 405 | .names i_7_ i_6_ n_n3 n_n12 n_n1225 406 | 1011 1 407 | .names i_7_ i_6_ n_n4 n_n11 n_n1197 408 | 0111 1 409 | .names i_1_ i_2_ i_0_ [69] n_n936 410 | 1001 1 411 | .names i_7_ i_6_ n_n4 n_n12 n_n1194 412 | 1011 1 413 | .names [285] [3288] [3290] [3292] n_n136 414 | 1--- 1 415 | -1-- 1 416 | --1- 1 417 | ---1 1 418 | .names i_7_ i_6_ n_n1 n_n12 n_n1028 419 | 1111 1 420 | 0111 1 421 | 1011 1 422 | .names [196] n_n1316 [306] [3296] n_n137 423 | 1--- 1 424 | -1-- 1 425 | --1- 1 426 | ---1 1 427 | .names i_7_ i_6_ n_n13 n_n1 n_n1029 428 | 0111 1 429 | 1011 1 430 | 0011 1 431 | .names o_13_ n_n1253 [588] n_n935 432 | 1-- 1 433 | -1- 1 434 | --1 1 435 | .names i_7_ i_6_ n_n2 n_n12 [184] 436 | 0111 1 437 | 1011 1 438 | .names [209] n_n809 n_n1223 [3299] [218] 439 | 1--- 1 440 | -1-- 1 441 | --1- 1 442 | ---1 1 443 | .names [197] [270] n_n823 [326] 444 | 1-- 1 445 | -1- 1 446 | --1 1 447 | .names n_n1203 n_n1056 [476] [348] 448 | 1-- 1 449 | -1- 1 450 | --1 1 451 | .names i_7_ i_6_ n_n2 n_n10 n_n1261 452 | 1111 1 453 | .names [287] n_n1268 [132] n_n573 454 | 1-- 1 455 | -1- 1 456 | --1 1 457 | .names i_7_ i_6_ n_n2 n_n9 n_n616 458 | 1111 1 459 | 0111 1 460 | 1011 1 461 | .names i_7_ i_6_ n_n2 n_n10 n_n617 462 | 0111 1 463 | 1011 1 464 | 0011 1 465 | .names o_6_ n_n1024 n_n1025 [568] n_n602 466 | 1--- 1 467 | -1-- 1 468 | --1- 1 469 | ---1 1 470 | .names i_7_ i_6_ n_n4 n_n12 [88] 471 | 1111 1 472 | 0111 1 473 | .names [76] n_n1017 [114] 474 | 1- 1 475 | -1 1 476 | .names n_n0 n_n7 n_n17 [128] [196] 477 | ---1 1 478 | 111- 1 479 | .names n_n1028 [162] [243] [298] 480 | 1-- 1 481 | -1- 1 482 | --1 1 483 | .names n_n822 n_n826 [270] n_n823 [318] 484 | 1--- 1 485 | -1-- 1 486 | --1- 1 487 | ---1 1 488 | .names n_n800 [195] [138] [3361] [319] 489 | 1--- 1 490 | -1-- 1 491 | --1- 1 492 | ---1 1 493 | .names i_5_ i_3_ i_4_ n_n7 494 | 000 1 495 | .names i_1_ i_2_ i_0_ n_n5 496 | 011 1 497 | .names i_7_ i_6_ n_n8 [82] 498 | 111 1 499 | .names i_7_ i_6_ n_n4 n_n11 n_n1196 500 | 1111 1 501 | .names i_7_ i_6_ n_n11 n_n1 n_n1287 502 | 1111 1 503 | .names i_7_ i_6_ n_n5 n_n12 n_n1163 504 | 1111 1 505 | .names i_7_ i_6_ n_n3 n_n12 n_n1049 506 | 0111 1 507 | 1011 1 508 | 0011 1 509 | .names i_7_ i_6_ n_n5 n_n18 n_n864 510 | 1111 1 511 | 0111 1 512 | 1011 1 513 | .names i_7_ i_6_ n_n0 n_n11 n_n1318 514 | 1111 1 515 | .names i_7_ i_6_ n_n4 n_n13 n_n1189 516 | 1111 1 517 | .names i_7_ i_6_ n_n4 n_n13 n_n1061 518 | 0111 1 519 | 1011 1 520 | 0011 1 521 | .names i_7_ i_6_ n_n19 n_n10 n_n756 522 | 1111 1 523 | 0111 1 524 | 1011 1 525 | .names i_7_ i_6_ n_n19 n_n12 n_n1083 526 | 0111 1 527 | 1011 1 528 | 0011 1 529 | .names n_n845 [128] n_n215 530 | 1- 1 531 | -1 1 532 | .names i_7_ i_6_ n_n6 n_n12 n_n1135 533 | 0011 1 534 | .names n_n11 [66] n_n921 n_n1 [250] 535 | --1- 1 536 | 11-1 1 537 | .names n_n1121 n_n468 [140] [3274] [285] 538 | 1--- 1 539 | -1-- 1 540 | --1- 1 541 | ---1 1 542 | .names n_n5 n_n13 [70] [297] 543 | 11- 1 544 | 1-1 1 545 | .names o_28_ [98] n_n1166 [309] 546 | 1-- 1 547 | -1- 1 548 | --1 1 549 | .names [229] [215] [3387] [3388] [333] 550 | 1--- 1 551 | -1-- 1 552 | --1- 1 553 | ---1 1 554 | .names n_n1076 n_n1077 n_n1136 [337] 555 | 1-- 1 556 | -1- 1 557 | --1 1 558 | .names [237] [139] [3393] [341] 559 | 1-- 1 560 | -1- 1 561 | --1 1 562 | .names n_n895 [173] [3222] [343] 563 | 1-- 1 564 | -1- 1 565 | --1 1 566 | .names i_7_ i_6_ n_n7 n_n5 n_n1181 567 | 1111 1 568 | .names i_1_ i_2_ i_0_ n_n6 569 | 101 1 570 | .names n_n716 [278] [140] [3274] n_n427 571 | 1--- 1 572 | -1-- 1 573 | --1- 1 574 | ---1 1 575 | .names n_n906 n_n1329 [128] n_n459 576 | 1-- 1 577 | -1- 1 578 | --1 1 579 | .names i_7_ i_6_ n_n6 n_n13 n_n973 580 | 1111 1 581 | 0111 1 582 | 1011 1 583 | .names i_7_ i_6_ n_n6 n_n12 n_n1134 584 | 1011 1 585 | .names n_n1121 [94] [353] [134] n_n904 586 | 1--- 1 587 | -1-- 1 588 | --1- 1 589 | ---1 1 590 | .names n_n2 [71] n_n1037 [3312] n_n996 591 | --1- 1 592 | ---1 1 593 | 11-- 1 594 | .names o_7_ n_n1268 n_n1033 [483] [87] 595 | 1--- 1 596 | -1-- 1 597 | --1- 1 598 | ---1 1 599 | .names [216] [3304] [3305] [3309] [200] 600 | 1--- 1 601 | -1-- 1 602 | --1- 1 603 | ---1 1 604 | .names n_n0 n_n10 [67] n_n909 [261] 605 | ---1 1 606 | 111- 1 607 | .names i_7_ i_6_ n_n2 n_n12 n_n1255 608 | 1011 1 609 | .names i_7_ i_6_ n_n2 n_n12 n_n1256 610 | 0011 1 611 | .names i_7_ i_6_ n_n11 n_n3 n_n1229 612 | 1011 1 613 | .names i_7_ i_6_ n_n4 n_n10 n_n953 614 | 1111 1 615 | 0111 1 616 | 1011 1 617 | .names i_7_ i_6_ n_n4 n_n10 n_n1203 618 | 0011 1 619 | .names i_7_ i_6_ n_n0 n_n7 n_n845 620 | 1111 1 621 | 0111 1 622 | 1011 1 623 | 0011 1 624 | .names n_n1029 n_n1 [70] [110] 625 | 1-- 1 626 | -11 1 627 | .names n_n826 [270] n_n823 [177] 628 | 1-- 1 629 | -1- 1 630 | --1 1 631 | .names n_n858 [3462] [3464] [182] 632 | 1-- 1 633 | -1- 1 634 | --1 1 635 | .names o_20_ n_n1211 [279] n_n813 [189] 636 | 1--- 1 637 | -1-- 1 638 | --1- 1 639 | ---1 1 640 | .names n_n822 n_n821 [421] [310] 641 | 1-- 1 642 | -1- 1 643 | --1 1 644 | .names [116] [137] n_n883 [3355] [339] 645 | 1--- 1 646 | -1-- 1 647 | --1- 1 648 | ---1 1 649 | .names i_1_ i_2_ i_0_ n_n4 650 | 001 1 651 | .names i_7_ i_6_ n_n12 [102] 652 | 111 1 653 | .names i_5_ i_3_ i_4_ n_n13 654 | 011 1 655 | .names i_7_ i_6_ n_n4 n_n9 n_n1056 656 | 1111 1 657 | 0111 1 658 | 1011 1 659 | .names [3304] [3305] [84] 660 | 1- 1 661 | -1 1 662 | .names n_n1283 n_n580 [260] [129] 663 | 1-- 1 664 | -1- 1 665 | --1 1 666 | .names i_7_ i_6_ n_n0 n_n11 [153] 667 | 1111 1 668 | 0111 1 669 | 1011 1 670 | 0011 1 671 | .names i_7_ i_6_ n_n0 n_n12 [155] 672 | 1011 1 673 | 0011 1 674 | .names [148] [487] [488] [3311] [201] 675 | 1--- 1 676 | -1-- 1 677 | --1- 1 678 | ---1 1 679 | .names n_n996 n_n2 n_n11 n_n17 [221] 680 | 1--- 1 681 | -111 1 682 | .names i_1_ i_2_ i_0_ n_n2 683 | 100 1 684 | .names i_7_ i_6_ n_n4 n_n8 n_n950 685 | 0111 1 686 | 1011 1 687 | 0011 1 688 | .names i_7_ i_6_ n_n3 n_n10 n_n805 689 | 1111 1 690 | 0111 1 691 | 1011 1 692 | .names i_1_ i_2_ i_0_ [71] n_n804 693 | 1101 1 694 | .names n_n1238 n_n1239 [450] n_n803 695 | 1-- 1 696 | -1- 1 697 | --1 1 698 | .names i_7_ i_6_ n_n4 n_n8 n_n1208 699 | 1111 1 700 | .names i_7_ i_6_ n_n3 n_n12 [104] 701 | 0111 1 702 | 1011 1 703 | .names n_n3 [69] [3465] [3467] [116] 704 | --1- 1 705 | ---1 1 706 | 11-- 1 707 | .names i_7_ i_6_ n_n2 n_n8 [159] 708 | 0111 1 709 | 1011 1 710 | .names i_7_ i_6_ n_n11 n_n1 [162] 711 | 1111 1 712 | 0111 1 713 | .names [88] n_n4 n_n11 n_n16 [164] 714 | 1--- 1 715 | -111 1 716 | .names n_n1245 [195] [277] [3361] [178] 717 | 1--- 1 718 | -1-- 1 719 | --1- 1 720 | ---1 1 721 | .names i_7_ i_6_ n_n4 n_n10 [288] 722 | 1011 1 723 | 0011 1 724 | .names n_n4 n_n11 n_n15 n_n12 [293] 725 | 111- 1 726 | 1-11 1 727 | .names i_5_ i_3_ i_4_ n_n11 728 | 010 1 729 | .names i_7_ i_6_ [66] 730 | 10 1 731 | 00 1 732 | .names n_n1287 n_n1285 [243] n_n923 733 | 1-- 1 734 | -1- 1 735 | --1 1 736 | .names i_7_ i_6_ n_n4 n_n9 n_n814 737 | 0111 1 738 | 1011 1 739 | 0011 1 740 | .names i_7_ i_6_ n_n7 n_n5 n_n822 741 | 0111 1 742 | 1011 1 743 | 0011 1 744 | .names i_7_ i_6_ n_n7 n_n19 n_n1122 745 | 0111 1 746 | .names i_7_ i_6_ n_n11 n_n1 n_n1288 747 | 0111 1 748 | .names i_1_ i_2_ i_0_ [72] n_n963 749 | 0111 1 750 | .names n_n1135 [337] n_n1137 n_n1006 751 | 1-- 1 752 | -1- 1 753 | --1 1 754 | .names i_7_ i_6_ n_n4 n_n9 n_n1204 755 | 1111 1 756 | .names i_7_ i_6_ n_n0 n_n11 [76] 757 | 1111 1 758 | 0111 1 759 | .names n_n1211 [279] n_n813 [86] 760 | 1-- 1 761 | -1- 1 762 | --1 1 763 | .names n_n5 n_n961 n_n9 [67] [111] 764 | -1-- 1 765 | 1-11 1 766 | .names i_7_ i_6_ n_n1 n_n12 [130] 767 | 1111 1 768 | 0111 1 769 | .names n_n6 n_n18 [70] [136] 770 | 11- 1 771 | 1-1 1 772 | .names o_14_ n_n1192 [534] [3535] [154] 773 | 1--- 1 774 | -1-- 1 775 | --1- 1 776 | ---1 1 777 | .names n_n2 [71] [3312] [253] 778 | --1 1 779 | 11- 1 780 | .names i_7_ i_6_ n_n4 n_n11 [274] 781 | 1111 1 782 | 0111 1 783 | .names n_n1238 n_n1239 [434] [276] 784 | 1-- 1 785 | -1- 1 786 | --1 1 787 | .names i_7_ i_6_ n_n4 n_n13 [291] 788 | 1111 1 789 | 0111 1 790 | .names i_7_ i_6_ n_n2 n_n11 [305] 791 | 1111 1 792 | 0111 1 793 | 1011 1 794 | 0011 1 795 | .names n_n1253 n_n934 n_n797 [345] 796 | 1-- 1 797 | -1- 1 798 | --1 1 799 | .names i_7_ i_6_ n_n17 800 | 11 1 801 | .names [94] n_n6 n_n973 n_n18 n_n128 802 | 1--- 1 803 | --1- 1 804 | -1-1 1 805 | .names n_n1061 [274] [242] [3573] n_n1002 806 | 1--- 1 807 | -1-- 1 808 | --1- 1 809 | ---1 1 810 | .names [186] n_n958 [592] [156] 811 | 1-- 1 812 | -1- 1 813 | --1 1 814 | .names o_6_ [298] [110] [568] [193] 815 | 1--- 1 816 | -1-- 1 817 | --1- 1 818 | ---1 1 819 | .names n_n1074 n_n609 [286] [316] [255] 820 | 1--- 1 821 | -1-- 1 822 | --1- 1 823 | ---1 1 824 | .names n_n1083 [236] [3577] [284] 825 | 1-- 1 826 | -1- 1 827 | --1 1 828 | .names n_n1134 n_n673 n_n1136 [313] 829 | 1-- 1 830 | -1- 1 831 | --1 1 832 | .names [114] n_n1015 n_n1320 [3216] [332] 833 | 1--- 1 834 | -1-- 1 835 | --1- 1 836 | ---1 1 837 | .names i_1_ i_2_ i_0_ n_n3 838 | 110 1 839 | .names i_7_ i_6_ n_n0 n_n7 n_n1010 840 | 1011 1 841 | 0011 1 842 | .names i_7_ i_6_ n_n1 n_n12 n_n1283 843 | 1111 1 844 | .names o_25_ n_n930 n_n1272 [132] n_n95 845 | 1--- 1 846 | -1-- 1 847 | --1- 1 848 | ---1 1 849 | .names i_7_ i_6_ n_n0 n_n7 n_n1334 850 | 1111 1 851 | .names i_7_ i_6_ n_n1 n_n12 n_n580 852 | 0111 1 853 | 1011 1 854 | 0011 1 855 | .names i_7_ i_6_ n_n0 n_n12 n_n1017 856 | 0111 1 857 | 1011 1 858 | 0011 1 859 | .names i_7_ i_6_ n_n0 n_n12 n_n1314 860 | 1111 1 861 | .names i_7_ i_6_ n_n13 n_n1 n_n1282 862 | 0011 1 863 | .names i_7_ i_6_ n_n13 n_n1 n_n925 864 | 1111 1 865 | 0111 1 866 | 1011 1 867 | .names o_24_ n_n1334 [128] n_n1013 n_n990 868 | 1--- 1 869 | -1-- 1 870 | --1- 1 871 | ---1 1 872 | .names o_6_ n_n923 n_n921 [3621] [179] 873 | 1--- 1 874 | -1-- 1 875 | --1- 1 876 | ---1 1 877 | .names o_18_ [130] [230] 878 | 1- 1 879 | -1 1 880 | .names n_n0 [70] [174] [3395] [237] 881 | --1- 1 882 | ---1 1 883 | 11-- 1 884 | .names n_n804 n_n803 [283] [3359] [238] 885 | 1--- 1 886 | -1-- 1 887 | --1- 1 888 | ---1 1 889 | .names i_7_ i_6_ n_n7 n_n4 [279] 890 | 1111 1 891 | 0111 1 892 | .names i_7_ i_6_ n_n4 n_n13 [180] 893 | 1111 1 894 | 0111 1 895 | 1011 1 896 | 0011 1 897 | .names i_7_ i_6_ n_n1 n_n8 n_n1300 898 | 0111 1 899 | .names n_n809 [322] [3638] n_n490 900 | 1-- 1 901 | -1- 1 902 | --1 1 903 | .names n_n1231 [135] [545] [546] n_n387 904 | 1--- 1 905 | -1-- 1 906 | --1- 1 907 | ---1 1 908 | .names i_7_ i_6_ n_n2 n_n11 n_n1258 909 | 0111 1 910 | .names [254] n_n1275 [132] n_n534 911 | 1-- 1 912 | -1- 1 913 | --1 1 914 | .names i_7_ i_6_ n_n1 n_n18 n_n926 915 | 0111 1 916 | 1011 1 917 | 0011 1 918 | .names n_n0 n_n17 [266] n_n12 n_n1018 919 | --1- 1 920 | 11-1 1 921 | .names o_9_ n_n1302 n_n1301 n_n1022 922 | 1-- 1 923 | -1- 1 924 | --1 1 925 | .names n_n0 n_n1021 [64] n_n18 [83] 926 | -1-- 1 927 | 1-11 1 928 | .names i_7_ i_6_ n_n1 n_n9 [183] 929 | 1011 1 930 | 0011 1 931 | .names [246] [109] [112] [229] 932 | 1-- 1 933 | -1- 1 934 | --1 1 935 | .names n_n13 n_n3 n_n14 n_n9 [247] 936 | 111- 1 937 | -111 1 938 | .names i_7_ i_6_ n_n2 n_n12 [257] 939 | 1111 1 940 | 0111 1 941 | 1011 1 942 | 0011 1 943 | .names i_7_ i_6_ n_n2 n_n10 [300] 944 | 1111 1 945 | 0111 1 946 | .names i_7_ i_6_ n_n2 n_n12 n_n1254 947 | 0111 1 948 | .names i_7_ i_6_ n_n4 n_n8 n_n813 949 | 1111 1 950 | 0111 1 951 | 1011 1 952 | .names i_7_ i_6_ n_n5 n_n8 n_n961 953 | 1111 1 954 | 0111 1 955 | 1011 1 956 | .names i_7_ i_6_ n_n0 n_n8 n_n1330 957 | 1111 1 958 | .names [146] [268] n_n1040 n_n642 959 | 1-- 1 960 | -1- 1 961 | --1 1 962 | .names i_7_ i_6_ n_n0 n_n12 n_n1316 963 | 1011 1 964 | .names [147] n_n1261 n_n616 n_n617 n_n574 965 | 1--- 1 966 | -1-- 1 967 | --1- 1 968 | ---1 1 969 | .names i_7_ i_6_ n_n10 n_n1 n_n921 970 | 1111 1 971 | 0111 1 972 | 1011 1 973 | .names [3671] [3672] [3674] [3676] n_n371 974 | 1--- 1 975 | -1-- 1 976 | --1- 1 977 | ---1 1 978 | .names i_7_ i_6_ n_n3 n_n8 [109] 979 | 0111 1 980 | 1011 1 981 | .names i_7_ i_6_ n_n7 n_n3 [112] 982 | 1111 1 983 | 0111 1 984 | .names i_7_ i_6_ n_n7 n_n2 [254] 985 | 1111 1 986 | 0111 1 987 | 1011 1 988 | 0011 1 989 | .names i_7_ i_6_ n_n0 n_n8 [259] 990 | 0111 1 991 | 1011 1 992 | .names [153] [85] n_n1021 n_n1020 [314] 993 | 1--- 1 994 | -1-- 1 995 | --1- 1 996 | ---1 1 997 | .names i_1_ i_2_ i_0_ n_n19 998 | 111 1 999 | .names [237] [139] [306] [3393] n_n660 1000 | 1--- 1 1001 | -1-- 1 1002 | --1- 1 1003 | ---1 1 1004 | .names o_11_ n_n1147 [532] n_n673 1005 | 1-- 1 1006 | -1- 1 1007 | --1 1 1008 | .names n_n1334 [128] [3296] n_n563 1009 | 1-- 1 1010 | -1- 1 1011 | --1 1 1012 | .names o_28_ [78] n_n1166 [99] 1013 | 1-- 1 1014 | -1- 1 1015 | --1 1 1016 | .names i_7_ i_6_ n_n2 n_n11 [127] 1017 | 1111 1 1018 | 0111 1 1019 | .names n_n1049 [77] [137] 1020 | 1- 1 1021 | -1 1 1022 | .names n_n822 [291] n_n821 [500] [197] 1023 | 1--- 1 1024 | -1-- 1 1025 | --1- 1 1026 | ---1 1 1027 | .names n_n1169 n_n1170 n_n826 [235] 1028 | 1-- 1 1029 | -1- 1 1030 | --1 1 1031 | .names n_n814 [154] [97] n_n817 [315] 1032 | 1--- 1 1033 | -1-- 1 1034 | --1- 1 1035 | ---1 1 1036 | .names o_10_ [112] n_n802 [325] 1037 | 1-- 1 1038 | -1- 1 1039 | --1 1 1040 | .names i_7_ i_6_ n_n0 n_n7 n_n906 1041 | 0111 1 1042 | 1011 1 1043 | 0011 1 1044 | .names n_n814 [97] n_n817 [141] 1045 | 1-- 1 1046 | -1- 1 1047 | --1 1 1048 | .names n_n1274 [87] [281] n_n1032 [165] 1049 | 1--- 1 1050 | -1-- 1 1051 | --1- 1 1052 | ---1 1 1053 | .names n_n1 n_n1025 n_n9 [64] [223] 1054 | -1-- 1 1055 | 1-11 1 1056 | .names n_n996 [345] n_n1257 n_n1040 [267] 1057 | 1--- 1 1058 | -1-- 1 1059 | --1- 1 1060 | ---1 1 1061 | .names n_n949 n_n950 n_n1208 [551] n_n895 1062 | 1--- 1 1063 | -1-- 1 1064 | --1- 1 1065 | ---1 1 1066 | .names i_7_ i_6_ n_n0 n_n11 n_n745 1067 | 0111 1 1068 | 1011 1 1069 | 0011 1 1070 | .names n_n0 [102] [266] [69] [85] 1071 | --1- 1 1072 | 11-- 1 1073 | 1--1 1 1074 | .names [229] [3387] [3388] [181] 1075 | 1-- 1 1076 | -1- 1 1077 | --1 1 1078 | .names i_7_ i_6_ n_n3 n_n12 [209] 1079 | 1111 1 1080 | 0111 1 1081 | .names n_n1228 n_n1227 [3358] [283] 1082 | 1-- 1 1083 | -1- 1 1084 | --1 1 1085 | .names i_7_ i_6_ n_n3 n_n10 [292] 1086 | 1111 1 1087 | 0111 1 1088 | .names i_7_ i_6_ n_n3 n_n18 n_n1216 1089 | 1111 1 1090 | .names i_7_ i_6_ n_n7 n_n3 n_n1244 1091 | 1011 1 1092 | .names i_7_ i_6_ n_n1 n_n9 n_n554 1093 | 0111 1 1094 | 1011 1 1095 | 0011 1 1096 | .names i_7_ i_6_ n_n3 n_n18 n_n810 1097 | 0111 1 1098 | 1011 1 1099 | 0011 1 1100 | .names i_7_ i_6_ n_n13 n_n3 n_n809 1101 | 1111 1 1102 | 0111 1 1103 | 1011 1 1104 | .names i_7_ i_6_ n_n2 n_n8 n_n1269 1105 | 0111 1 1106 | .names n_n7 n_n3 [277] n_n14 n_n800 1107 | --1- 1 1108 | 11-1 1 1109 | .names [487] [488] [3311] [150] 1110 | 1-- 1 1111 | -1- 1 1112 | --1 1 1113 | .names [112] n_n802 [195] 1114 | 1- 1 1115 | -1 1 1116 | .names i_7_ i_6_ n_n7 n_n2 [287] 1117 | 1111 1 1118 | 0111 1 1119 | 1011 1 1120 | 0011 1 1121 | .names i_7_ i_6_ n_n6 n_n11 [308] 1122 | 0111 1 1123 | 1011 1 1124 | 0011 1 1125 | .names n_n845 n_n858 [3462] [3464] [321] 1126 | 1--- 1 1127 | -1-- 1 1128 | --1- 1 1129 | ---1 1 1130 | .names [189] n_n814 [97] n_n817 [322] 1131 | 1--- 1 1132 | -1-- 1 1133 | --1- 1 1134 | ---1 1 1135 | .names n_n2 n_n574 [70] [138] [340] 1136 | -1-- 1 1137 | ---1 1 1138 | 1-1- 1 1139 | .names [187] [99] [191] [342] 1140 | 1-- 1 1141 | -1- 1 1142 | --1 1 1143 | .names i_7_ i_6_ n_n3 n_n12 n_n1224 1144 | 0111 1 1145 | .names n_n2 n_n937 [69] [3802] n_n711 1146 | -1-- 1 1147 | ---1 1 1148 | 1-1- 1 1149 | .names i_7_ i_6_ n_n1 n_n12 n_n1284 1150 | 0111 1 1151 | .names i_7_ i_6_ n_n6 n_n12 n_n1076 1152 | 1111 1 1153 | 0111 1 1154 | 1011 1 1155 | .names n_n3 [69] [3465] [95] 1156 | --1 1 1157 | 11- 1 1158 | .names n_n1 [69] [3384] [107] 1159 | --1 1 1160 | 11- 1 1161 | .names [246] [109] n_n1243 [217] 1162 | 1-- 1 1163 | -1- 1 1164 | --1 1 1165 | .names n_n7 n_n2 n_n16 [132] [231] 1166 | ---1 1 1167 | 111- 1 1168 | .names i_7_ i_6_ n_n13 n_n1 [260] 1169 | 1011 1 1170 | 0011 1 1171 | .names o_13_ n_n1253 n_n934 [588] [295] 1172 | 1--- 1 1173 | -1-- 1 1174 | --1- 1 1175 | ---1 1 1176 | .names n_n1002 [3485] [3486] [3804] [347] 1177 | 1--- 1 1178 | -1-- 1 1179 | --1- 1 1180 | ---1 1 1181 | .names n_n17 [260] n_n1 n_n12 n_n581 1182 | -1-- 1 1183 | 1-11 1 1184 | .names [248] n_n0 n_n17 n_n8 n_n742 1185 | 1--- 1 1186 | -111 1 1187 | .names i_7_ i_6_ n_n7 n_n3 n_n1243 1188 | 1111 1 1189 | .names o_7_ n_n1268 [483] n_n1034 1190 | 1-- 1 1191 | -1- 1 1192 | --1 1 1193 | .names o_12_ [504] [505] n_n824 1194 | 1-- 1 1195 | -1- 1 1196 | --1 1 1197 | .names [288] n_n1204 [412] [413] [97] 1198 | 1--- 1 1199 | -1-- 1 1200 | --1- 1 1201 | ---1 1 1202 | .names i_7_ i_6_ n_n8 [101] 1203 | 101 1 1204 | .names i_7_ i_6_ n_n7 n_n5 [271] 1205 | 1111 1 1206 | 0111 1 1207 | .names [186] n_n958 [180] [592] [320] 1208 | 1--- 1 1209 | -1-- 1 1210 | --1- 1 1211 | ---1 1 1212 | .names i_7_ i_6_ n_n4 n_n11 n_n817 1213 | 1111 1 1214 | 0111 1 1215 | 1011 1 1216 | .names n_n5 [271] n_n8 n_n14 n_n960 1217 | -1-- 1 1218 | 1-11 1 1219 | .names i_7_ i_6_ n_n5 n_n12 n_n1165 1220 | 1011 1 1221 | .names n_n1008 [136] [198] [3886] n_n989 1222 | 1--- 1 1223 | -1-- 1 1224 | --1- 1 1225 | ---1 1 1226 | .names i_7_ i_6_ n_n4 n_n18 n_n821 1227 | 1111 1 1228 | 0111 1 1229 | 1011 1 1230 | .names i_7_ i_6_ n_n0 n_n10 n_n1322 1231 | 1111 1 1232 | .names n_n1301 [106] [3390] [139] 1233 | 1-- 1 1234 | -1- 1 1235 | --1 1 1236 | .names i_7_ i_6_ n_n1 n_n8 [207] 1237 | 1111 1 1238 | .names i_7_ i_6_ n_n2 n_n18 [277] 1239 | 1111 1 1240 | 0111 1 1241 | .names i_7_ i_6_ n_n6 n_n11 n_n1139 1242 | 0011 1 1243 | .names i_7_ i_6_ n_n1 n_n8 n_n553 1244 | 1111 1 1245 | 0111 1 1246 | 1011 1 1247 | .names i_7_ i_6_ n_n6 n_n11 n_n1138 1248 | 1011 1 1249 | .names i_7_ i_6_ n_n2 n_n9 n_n930 1250 | 0111 1 1251 | 1011 1 1252 | 0011 1 1253 | .names i_7_ i_6_ n_n7 n_n1 n_n1021 1254 | 0111 1 1255 | 1011 1 1256 | 0011 1 1257 | .names i_7_ i_6_ n_n19 n_n8 [113] 1258 | 0111 1 1259 | 1011 1 1260 | .names n_n554 n_n1 [72] [148] 1261 | 1-- 1 1262 | -11 1 1263 | .names i_7_ i_6_ n_n6 n_n8 [158] 1264 | 0111 1 1265 | 1011 1 1266 | .names i_7_ i_6_ n_n11 n_n19 [161] 1267 | 1111 1 1268 | 0111 1 1269 | .names n_n1180 n_n961 [271] n_n962 [194] 1270 | 1--- 1 1271 | -1-- 1 1272 | --1- 1 1273 | ---1 1 1274 | .names n_n19 n_n8 n_n14 [134] [198] 1275 | ---1 1 1276 | 111- 1 1277 | .names n_n574 n_n799 [138] [3973] n_n476 1278 | 1--- 1 1279 | -1-- 1 1280 | --1- 1 1281 | ---1 1 1282 | .names n_n490 n_n883 [3355] [3978] [263] 1283 | 1--- 1 1284 | -1-- 1 1285 | --1- 1 1286 | ---1 1 1287 | .names n_n0 n_n990 [72] [264] 1288 | -1- 1 1289 | 1-1 1 1290 | .names i_7_ i_6_ n_n0 n_n10 [265] 1291 | 1111 1 1292 | 0111 1 1293 | .names i_7_ i_6_ n_n6 n_n9 n_n1147 1294 | 0011 1 1295 | .names i_7_ i_6_ n_n3 n_n9 n_n1238 1296 | 0011 1 1297 | .names i_7_ i_6_ n_n5 n_n18 n_n1155 1298 | 1111 1 1299 | .names i_7_ i_6_ n_n13 n_n2 n_n1253 1300 | 0011 1 1301 | .names i_7_ i_6_ n_n3 n_n10 n_n1231 1302 | 1111 1 1303 | .names [93] [466] n_n738 1304 | 1- 1 1305 | -1 1 1306 | .names n_n6 n_n18 [70] [3273] n_n468 1307 | ---1 1 1308 | 11-- 1 1309 | 1-1- 1 1310 | .names n_n1083 [236] [473] n_n716 1311 | 1-- 1 1312 | -1- 1 1313 | --1 1 1314 | .names i_7_ i_6_ n_n0 n_n13 [266] 1315 | 1011 1 1316 | 0011 1 1317 | .names n_n1009 [471] [278] 1318 | 1- 1 1319 | -1 1 1320 | .names n_n3 n_n10 [67] [546] [290] 1321 | ---1 1 1322 | 111- 1 1323 | .names [354] [92] [158] [160] [323] 1324 | 1--- 1 1325 | -1-- 1 1326 | --1- 1 1327 | ---1 1 1328 | .names i_7_ i_6_ n_n2 n_n18 [268] 1329 | 1111 1 1330 | 0111 1 1331 | 1011 1 1332 | 0011 1 1333 | .names i_7_ i_6_ n_n3 n_n8 n_n1239 1334 | 1111 1 1335 | .names i_7_ i_6_ n_n2 n_n9 n_n1268 1336 | 0011 1 1337 | .names n_n1215 n_n1216 [561] n_n948 1338 | 1-- 1 1339 | -1- 1 1340 | --1 1 1341 | .names i_7_ i_6_ n_n11 n_n3 [135] 1342 | 1011 1 1343 | 0011 1 1344 | .names n_n3 [70] [3221] [173] 1345 | --1 1 1346 | 11- 1 1347 | .names n_n0 n_n11 [265] n_n14 n_n1015 1348 | --1- 1 1349 | 11-1 1 1350 | .names n_n2 [70] [138] [233] 1351 | --1 1 1352 | 11- 1 1353 | .names i_7_ i_6_ n_n1 n_n18 [281] 1354 | 1111 1 1355 | 0111 1 1356 | .names i_7_ i_6_ n_n5 n_n11 n_n1167 1357 | 0111 1 1358 | .names i_5_ i_3_ i_4_ n_n10 1359 | 101 1 1360 | .names n_n1194 n_n1196 [242] n_n955 1361 | 1-- 1 1362 | -1- 1 1363 | --1 1 1364 | .names [461] [3341] [3342] [3345] n_n883 1365 | 1--- 1 1366 | -1-- 1 1367 | --1- 1 1368 | ---1 1 1369 | .names [222] [3348] n_n901 1370 | 1- 1 1371 | -1 1 1372 | .names i_7_ i_6_ n_n1 n_n18 [269] 1373 | 1111 1 1374 | 0111 1 1375 | 1011 1 1376 | 0011 1 1377 | .names n_n1321 [76] n_n1322 n_n1320 [306] 1378 | 1--- 1 1379 | -1-- 1 1380 | --1- 1 1381 | ---1 1 1382 | .names i_1_ i_2_ i_0_ n_n1 1383 | 010 1 1384 | .names i_7_ i_6_ n_n7 n_n2 n_n582 1385 | 0111 1 1386 | 1011 1 1387 | 0011 1 1388 | .names i_7_ i_6_ n_n6 n_n8 n_n1148 1389 | 0111 1 1390 | .names i_7_ i_6_ n_n19 n_n12 n_n1104 1391 | 0111 1 1392 | .names i_5_ i_3_ i_4_ n_n8 1393 | 100 1 1394 | .names i_7_ i_6_ n_n19 n_n8 n_n1119 1395 | 0111 1 1396 | .names i_7_ i_6_ n_n6 n_n12 n_n1133 1397 | 0111 1 1398 | .names i_7_ i_6_ n_n7 n_n1 n_n1303 1399 | 0111 1 1400 | .names i_7_ i_6_ n_n5 n_n10 n_n1170 1401 | 1111 1 1402 | .names i_7_ i_6_ n_n5 n_n10 n_n826 1403 | 0111 1 1404 | 1011 1 1405 | 0011 1 1406 | .names n_n1 n_n14 n_n9 [3218] n_n1023 1407 | ---1 1 1408 | 111- 1 1409 | .names i_7_ i_6_ n_n1 n_n9 n_n1024 1410 | 1111 1 1411 | 0111 1 1412 | 1011 1 1413 | .names n_n1139 n_n1147 [532] n_n786 1414 | 1-- 1 1415 | -1- 1 1416 | --1 1 1417 | .names i_7_ i_6_ n_n10 n_n1 n_n1025 1418 | 0111 1 1419 | 1011 1 1420 | 0011 1 1421 | .names i_7_ i_6_ n_n7 n_n2 n_n1273 1422 | 1011 1 1423 | .names i_7_ i_6_ n_n1 n_n8 n_n1301 1424 | 1011 1 1425 | .names i_7_ i_6_ n_n6 n_n13 n_n1077 1426 | 0111 1 1427 | 1011 1 1428 | 0011 1 1429 | .names i_7_ i_6_ n_n12 o_3_ 1430 | 001 1 1431 | .names i_7_ i_6_ n_n11 n_n3 n_n1228 1432 | 0111 1 1433 | .names i_7_ i_6_ n_n6 n_n11 n_n1137 1434 | 0111 1 1435 | .names i_7_ i_6_ n_n0 n_n11 n_n1319 1436 | 0111 1 1437 | .names i_7_ i_6_ n_n6 n_n8 n_n1074 1438 | 0111 1 1439 | 1011 1 1440 | 0011 1 1441 | .names i_7_ i_6_ n_n14 1442 | 00 1 1443 | .names o_12_ n_n825 [504] [505] [270] 1444 | 1--- 1 1445 | -1-- 1 1446 | --1- 1 1447 | ---1 1 1448 | .names i_7_ i_6_ n_n15 1449 | 10 1 1450 | .names n_n1169 n_n1170 [549] n_n859 1451 | 1-- 1 1452 | -1- 1 1453 | --1 1 1454 | .names i_5_ i_3_ i_4_ n_n12 1455 | 110 1 1456 | .names i_7_ i_6_ n_n4 n_n13 n_n1192 1457 | 0011 1 1458 | .names i_7_ i_6_ n_n2 n_n12 n_n934 1459 | 0111 1 1460 | 1011 1 1461 | 0011 1 1462 | .names i_7_ i_6_ n_n1 n_n12 n_n1285 1463 | 1011 1 1464 | .names i_7_ i_6_ n_n1 n_n12 [243] 1465 | 0011 1 1466 | .names i_7_ i_6_ n_n4 n_n9 [273] 1467 | 1111 1 1468 | 0111 1 1469 | .names i_7_ i_6_ n_n7 n_n6 n_n1153 1470 | 1011 1 1471 | .names i_7_ i_6_ n_n11 n_n3 n_n1230 1472 | 0011 1 1473 | .names i_7_ i_6_ n_n10 n_n9 [71] 1474 | 001- 1 1475 | 11-1 1 1476 | 01-1 1 1477 | .names i_7_ i_6_ n_n2 n_n11 n_n1257 1478 | 1111 1 1479 | .names i_7_ i_6_ n_n13 n_n2 n_n1040 1480 | 1111 1 1481 | 0111 1 1482 | 1011 1 1483 | .names i_7_ i_6_ n_n2 n_n18 n_n937 1484 | 1111 1 1485 | 0111 1 1486 | 1011 1 1487 | .names i_7_ i_6_ n_n13 n_n18 [69] 1488 | 111- 1 1489 | 011- 1 1490 | 00-1 1 1491 | .names i_7_ i_6_ n_n3 n_n8 n_n802 1492 | 0111 1 1493 | 1011 1 1494 | 0011 1 1495 | .names i_7_ i_6_ n_n3 n_n12 n_n1226 1496 | 0011 1 1497 | .names i_7_ i_6_ n_n1 n_n9 n_n1298 1498 | 0011 1 1499 | .names i_7_ i_6_ n_n11 n_n3 [77] 1500 | 1111 1 1501 | 0111 1 1502 | .names n_n1180 n_n1181 [507] n_n823 1503 | 1-- 1 1504 | -1- 1 1505 | --1 1 1506 | .names i_5_ i_3_ i_4_ n_n9 1507 | 001 1 1508 | .names i_7_ i_6_ [67] 1509 | 01 1 1510 | 10 1 1511 | 00 1 1512 | .names i_7_ i_6_ n_n5 n_n9 n_n962 1513 | 0111 1 1514 | 1011 1 1515 | 0011 1 1516 | .names i_7_ i_6_ n_n0 n_n9 n_n1329 1517 | 0011 1 1518 | .names i_7_ i_6_ n_n0 n_n8 [128] 1519 | 1111 1 1520 | 0111 1 1521 | 1011 1 1522 | 0011 1 1523 | .names n_n5 n_n13 [70] [3349] n_n609 1524 | ---1 1 1525 | 11-- 1 1526 | 1-1- 1 1527 | .names i_7_ i_6_ n_n5 n_n18 [286] 1528 | 1111 1 1529 | 0111 1 1530 | .names i_7_ i_6_ n_n7 n_n2 n_n1272 1531 | 1111 1 1532 | .names i_7_ i_6_ n_n7 n_n6 [160] 1533 | 1111 1 1534 | 0111 1 1535 | .names i_7_ i_6_ n_n0 n_n11 n_n1320 1536 | 1011 1 1537 | .names i_7_ i_6_ n_n0 n_n8 n_n858 1538 | 0111 1 1539 | 1011 1 1540 | 0011 1 1541 | .names i_7_ i_6_ [64] 1542 | 11 1 1543 | 01 1 1544 | 10 1 1545 | .names i_7_ i_6_ n_n0 n_n18 n_n1020 1546 | 1111 1 1547 | 0111 1 1548 | 1011 1 1549 | .names i_7_ i_6_ n_n0 n_n12 n_n1315 1550 | 0111 1 1551 | .names i_7_ i_6_ n_n16 1552 | 01 1 1553 | .names i_7_ i_6_ n_n10 n_n9 [72] 1554 | 101- 1 1555 | 001- 1 1556 | 11-1 1 1557 | .names i_7_ i_6_ n_n11 n_n19 [236] 1558 | 1111 1 1559 | 0111 1 1560 | 1011 1 1561 | 0011 1 1562 | .names i_5_ i_3_ i_4_ [163] 1563 | 111 1 1564 | 011 1 1565 | .names i_7_ i_6_ n_n4 n_n12 [242] 1566 | 0011 1 1567 | .names i_7_ i_6_ n_n13 n_n3 n_n1223 1568 | 0011 1 1569 | .names i_1_ i_2_ i_0_ [72] n_n931 1570 | 1001 1 1571 | .names i_1_ i_2_ i_0_ n_n18 [353] 1572 | 1011 1 1573 | .names i_7_ i_6_ n_n11 n_n3 n_n1227 1574 | 1111 1 1575 | .names i_7_ i_6_ n_n1 n_n18 n_n1275 1576 | 1111 1 1577 | .names i_7_ i_6_ n_n2 n_n8 [132] 1578 | 1111 1 1579 | 0111 1 1580 | 1011 1 1581 | 0011 1 1582 | .names i_7_ i_6_ n_n5 n_n12 [98] 1583 | 0111 1 1584 | 1011 1 1585 | .names i_5_ i_3_ i_4_ n_n18 1586 | 111 1 1587 | .names i_7_ i_6_ n_n0 n_n10 n_n910 1588 | 0111 1 1589 | 1011 1 1590 | 0011 1 1591 | .names i_7_ i_6_ n_n0 n_n9 n_n909 1592 | 1111 1 1593 | 0111 1 1594 | 1011 1 1595 | .names n_n1321 n_n1322 n_n1320 n_n911 1596 | 1-- 1 1597 | -1- 1 1598 | --1 1 1599 | .names i_7_ i_6_ n_n0 n_n18 n_n792 1600 | 0111 1 1601 | 1011 1 1602 | 0011 1 1603 | .names i_7_ i_6_ n_n0 n_n9 n_n1013 1604 | 0111 1 1605 | 1011 1 1606 | 0011 1 1607 | .names n_n6 n_n11 n_n17 n_n1076 [225] 1608 | ---1 1 1609 | 111- 1 1610 | .names i_7_ i_6_ n_n6 n_n11 n_n1136 1611 | 1111 1 1612 | .names i_7_ i_6_ n_n5 n_n9 n_n825 1613 | 1111 1 1614 | 0111 1 1615 | 1011 1 1616 | .names i_7_ i_6_ n_n13 n_n18 [70] 1617 | 111- 1 1618 | 10-1 1 1619 | 00-1 1 1620 | .names i_1_ i_2_ i_0_ [70] n_n799 1621 | 1001 1 1622 | .names i_7_ i_6_ n_n7 n_n19 [134] 1623 | 1111 1 1624 | 0111 1 1625 | .names i_7_ i_6_ n_n5 n_n11 [78] 1626 | 0111 1 1627 | 1011 1 1628 | .names n_n1009 [515] [3283] [302] 1629 | 1-- 1 1630 | -1- 1 1631 | --1 1 1632 | .names n_n1238 n_n1239 n_n937 [3238] [211] 1633 | 1--- 1 1634 | -1-- 1 1635 | --1- 1 1636 | ---1 1 1637 | .names i_7_ i_6_ n_n7 n_n4 n_n1213 1638 | 0111 1 1639 | .names i_7_ i_6_ n_n5 n_n12 n_n1166 1640 | 0011 1 1641 | .names i_7_ i_6_ n_n2 n_n11 n_n1037 1642 | 0111 1 1643 | 1011 1 1644 | 0011 1 1645 | .names i_1_ i_2_ i_0_ [72] n_n1014 1646 | 0001 1 1647 | .names i_7_ i_6_ n_n1 n_n12 [219] 1648 | 0111 1 1649 | 1011 1 1650 | .names n_n1229 [292] n_n1230 [215] 1651 | 1-- 1 1652 | -1- 1 1653 | --1 1 1654 | .names i_7_ i_6_ n_n7 n_n2 n_n1032 1655 | 1111 1 1656 | 0111 1 1657 | 1011 1 1658 | .names n_n11 [66] n_n1 [568] [303] 1659 | ---1 1 1660 | 111- 1 1661 | .names i_7_ i_6_ n_n2 n_n12 n_n797 1662 | 1111 1 1663 | 0111 1 1664 | 1011 1 1665 | .names i_7_ i_6_ n_n7 n_n6 [316] 1666 | 1111 1 1667 | 0111 1 1668 | 1011 1 1669 | 0011 1 1670 | .names i_7_ i_6_ n_n2 n_n8 n_n1033 1671 | 0111 1 1672 | 1011 1 1673 | 0011 1 1674 | .names n_n1163 [98] [564] [191] 1675 | 1-- 1 1676 | -1- 1 1677 | --1 1 1678 | .names i_7_ i_6_ n_n7 n_n1 [106] 1679 | 1111 1 1680 | 0111 1 1681 | .names i_7_ i_6_ n_n19 n_n9 [133] 1682 | 1011 1 1683 | 0011 1 1684 | .names n_n1256 [127] n_n797 [3363] [138] 1685 | 1--- 1 1686 | -1-- 1 1687 | --1- 1 1688 | ---1 1 1689 | .names n_n19 [113] [71] [140] 1690 | -1- 1 1691 | 1-1 1 1692 | .names [249] n_n792 [493] [216] 1693 | 1-- 1 1694 | -1- 1 1695 | --1 1 1696 | .names i_7_ i_6_ n_n0 n_n12 [174] 1697 | 1111 1 1698 | 0111 1 1699 | 1011 1 1700 | 0011 1 1701 | .names i_7_ i_6_ n_n4 n_n10 [412] 1702 | 1111 1 1703 | 0111 1 1704 | .names i_7_ i_6_ n_n4 n_n11 [413] 1705 | 0011 1 1706 | .names i_7_ i_6_ n_n13 n_n3 [414] 1707 | 1011 1 1708 | .names i_7_ i_6_ n_n4 n_n18 [421] 1709 | 0011 1 1710 | .names i_7_ i_6_ n_n0 n_n18 [426] 1711 | 1111 1 1712 | 0111 1 1713 | .names i_7_ i_6_ n_n3 n_n9 [434] 1714 | 0111 1 1715 | 1011 1 1716 | .names i_7_ i_6_ n_n3 n_n9 [450] 1717 | 1011 1 1718 | .names i_7_ i_6_ n_n6 n_n9 [456] 1719 | 1011 1 1720 | .names i_7_ i_6_ [93] [466] [461] 1721 | 111- 1 1722 | 011- 1 1723 | 11-1 1 1724 | 01-1 1 1725 | .names [93] n_n10 [466] [462] 1726 | 11- 1 1727 | -11 1 1728 | .names n_n6 n_n10 n_n9 [64] [466] 1729 | 11-- 1 1730 | 1-11 1 1731 | .names i_7_ i_6_ n_n6 n_n13 [468] 1732 | 0011 1 1733 | .names i_7_ i_6_ n_n19 n_n10 [471] 1734 | 1011 1 1735 | .names i_7_ i_6_ n_n19 n_n10 [473] 1736 | 1111 1 1737 | 0111 1 1738 | .names i_7_ i_6_ n_n4 n_n10 [476] 1739 | 0111 1 1740 | 1011 1 1741 | .names i_7_ i_6_ n_n2 n_n9 [483] 1742 | 1011 1 1743 | .names i_7_ i_6_ n_n10 n_n1 [487] 1744 | 1111 1 1745 | 0111 1 1746 | .names i_7_ i_6_ n_n11 n_n1 [488] 1747 | 0011 1 1748 | .names i_7_ i_6_ n_n0 n_n18 [493] 1749 | 1111 1 1750 | .names i_7_ i_6_ n_n4 n_n18 [500] 1751 | 0011 1 1752 | .names i_7_ i_6_ n_n5 n_n9 [504] 1753 | 0011 1 1754 | .names i_7_ i_6_ n_n5 n_n8 [505] 1755 | 0111 1 1756 | .names i_7_ i_6_ n_n5 n_n8 [507] 1757 | 1011 1 1758 | .names i_7_ i_6_ n_n4 n_n9 [512] 1759 | 0011 1 1760 | .names i_7_ i_6_ n_n19 n_n12 [515] 1761 | 1011 1 1762 | .names n_n6 n_n10 n_n9 [64] [532] 1763 | 11-- 1 1764 | 1-11 1 1765 | .names i_7_ i_6_ n_n4 n_n13 [534] 1766 | 1011 1 1767 | .names i_7_ i_6_ n_n3 n_n10 [545] 1768 | 0111 1 1769 | 1011 1 1770 | 0011 1 1771 | .names i_7_ i_6_ n_n3 n_n9 [546] 1772 | 1111 1 1773 | 0111 1 1774 | 1011 1 1775 | .names i_7_ i_6_ n_n5 n_n10 [549] 1776 | 0111 1 1777 | .names i_7_ i_6_ n_n4 n_n9 [551] 1778 | 1011 1 1779 | 0011 1 1780 | .names i_7_ i_6_ n_n3 n_n18 [561] 1781 | 0111 1 1782 | .names i_7_ i_6_ n_n5 n_n13 [564] 1783 | 1011 1 1784 | 0011 1 1785 | .names i_7_ i_6_ n_n10 n_n1 [568] 1786 | 1111 1 1787 | .names i_7_ i_6_ n_n13 n_n2 [588] 1788 | 1011 1 1789 | .names i_7_ i_6_ n_n4 n_n18 [592] 1790 | 1111 1 1791 | .names i_5_ i_3_ i_4_ n_n14 [3176] 1792 | 0111 1 1793 | 0011 1 1794 | .names n_n7 n_n5 n_n11 n_n14 [3177] 1795 | --11 1 1796 | 11-1 1 1797 | .names n_n7 n_n6 n_n3 n_n14 [3178] 1798 | 11-1 1 1799 | 1-11 1 1800 | .names n_n0 n_n7 n_n4 n_n14 [3179] 1801 | 11-1 1 1802 | -111 1 1803 | .names n_n7 n_n2 n_n19 n_n14 [3180] 1804 | 11-1 1 1805 | 1-11 1 1806 | .names n_n1305 [3176] [3177] [3178] [3184] 1807 | 1--- 1 1808 | -1-- 1 1809 | --1- 1 1810 | ---1 1 1811 | .names n_n5 n_n19 n_n8 n_n14 [3188] 1812 | 1-11 1 1813 | -111 1 1814 | .names n_n4 n_n2 n_n8 n_n14 [3189] 1815 | 1-11 1 1816 | -111 1 1817 | .names n_n0 n_n1 n_n8 n_n14 [3190] 1818 | 1-11 1 1819 | -111 1 1820 | .names n_n6 n_n3 n_n8 n_n14 [3191] 1821 | 1-11 1 1822 | -111 1 1823 | .names i_7_ i_6_ n_n11 [3195] 1824 | 101 1 1825 | 001 1 1826 | .names n_n4 n_n11 [66] n_n1 [3196] 1827 | 111- 1 1828 | -111 1 1829 | .names n_n1168 n_n1321 [3196] [3203] 1830 | 1-- 1 1831 | -1- 1 1832 | --1 1 1833 | .names o_20_ n_n1010 [135] n_n1320 [3204] 1834 | 1--- 1 1835 | -1-- 1 1836 | --1- 1 1837 | ---1 1 1838 | .names n_n1169 [73] [92] [93] [3205] 1839 | 1--- 1 1840 | -1-- 1 1841 | --1- 1 1842 | ---1 1 1843 | .names [94] [146] [147] [186] [3206] 1844 | 1--- 1 1845 | -1-- 1 1846 | --1- 1 1847 | ---1 1 1848 | .names [208] [249] [3203] [3206] [3209] 1849 | 1--- 1 1850 | -1-- 1 1851 | --1- 1 1852 | ---1 1 1853 | .names o_21_ n_n1197 n_n953 [3210] 1854 | 1-- 1 1855 | -1- 1 1856 | --1 1 1857 | .names i_7_ i_6_ n_n19 n_n8 [3213] 1858 | 1111 1 1859 | 0111 1 1860 | .names n_n0 [72] n_n1013 [3216] 1861 | --1 1 1862 | 11- 1 1863 | .names n_n845 n_n858 [3217] 1864 | 1- 1 1865 | -1 1 1866 | .names i_7_ i_6_ n_n1 n_n8 [3218] 1867 | 1111 1 1868 | 0111 1 1869 | .names i_7_ i_6_ n_n13 n_n3 [3221] 1870 | 0111 1 1871 | 1011 1 1872 | 0011 1 1873 | .names o_15_ n_n1215 n_n1216 [561] [3222] 1874 | 1--- 1 1875 | -1-- 1 1876 | --1- 1 1877 | ---1 1 1878 | .names n_n4 n_n11 [66] [180] [3225] 1879 | ---1 1 1880 | 111- 1 1881 | .names i_7_ i_6_ n_n7 n_n3 [3236] 1882 | 0111 1 1883 | 1011 1 1884 | 0011 1 1885 | .names n_n1238 n_n1239 n_n937 [3237] 1886 | 1-- 1 1887 | -1- 1 1888 | --1 1 1889 | .names [246] [109] n_n1243 [3236] [3238] 1890 | 1--- 1 1891 | -1-- 1 1892 | --1- 1 1893 | ---1 1 1894 | .names n_n6 n_n13 n_n17 n_n12 [3239] 1895 | 11-- 1 1896 | 1-11 1 1897 | .names n_n1009 n_n4 [67] n_n18 [3243] 1898 | 1--- 1 1899 | -111 1 1900 | .names n_n1135 n_n1134 n_n1137 n_n1136 [3244] 1901 | 1--- 1 1902 | -1-- 1 1903 | --1- 1 1904 | ---1 1 1905 | .names o_7_ [186] n_n1120 [592] [3245] 1906 | 1--- 1 1907 | -1-- 1 1908 | --1- 1 1909 | ---1 1 1910 | .names [93] n_n872 [159] [219] [3248] 1911 | 1--- 1 1912 | -1-- 1 1913 | --1- 1 1914 | ---1 1 1915 | .names n_n1008 n_n1203 [273] [3210] [3250] 1916 | 1--- 1 1917 | -1-- 1 1918 | --1- 1 1919 | ---1 1 1920 | .names [354] [92] [222] [160] [3251] 1921 | 1--- 1 1922 | -1-- 1 1923 | --1- 1 1924 | ---1 1 1925 | .names n_n949 [162] [243] [3245] [3255] 1926 | 1--- 1 1927 | -1-- 1 1928 | --1- 1 1929 | ---1 1 1930 | .names [187] [226] [3248] [3256] 1931 | 1-- 1 1932 | -1- 1 1933 | --1 1 1934 | .names n_n936 [295] [3243] [3244] [3257] 1935 | 1--- 1 1936 | -1-- 1 1937 | --1- 1 1938 | ---1 1 1939 | .names [228] [99] [191] [3251] [3261] 1940 | 1--- 1 1941 | -1-- 1 1942 | --1- 1 1943 | ---1 1 1944 | .names [280] [327] [331] [346] [3262] 1945 | 1--- 1 1946 | -1-- 1 1947 | --1- 1 1948 | ---1 1 1949 | .names [301] n_n387 [3237] [3238] [3264] 1950 | 1--- 1 1951 | -1-- 1 1952 | --1- 1 1953 | ---1 1 1954 | .names [240] [252] [324] [3250] [3266] 1955 | 1--- 1 1956 | -1-- 1 1957 | --1- 1 1958 | ---1 1 1959 | .names [3262] [3261] [3267] 1960 | 1- 1 1961 | -1 1 1962 | .names [332] [3217] [3255] [3256] [3268] 1963 | 1--- 1 1964 | -1-- 1 1965 | --1- 1 1966 | ---1 1 1967 | .names [115] [192] [3257] [3264] [3269] 1968 | 1--- 1 1969 | -1-- 1 1970 | --1- 1 1971 | ---1 1 1972 | .names i_7_ i_6_ n_n7 n_n19 [3273] 1973 | 1111 1 1974 | 0111 1 1975 | 1011 1 1976 | 0011 1 1977 | .names n_n17 n_n19 n_n8 [133] [3274] 1978 | ---1 1 1979 | 111- 1 1980 | .names o_11_ n_n5 n_n17 n_n18 [3277] 1981 | 1--- 1 1982 | -111 1 1983 | .names n_n5 n_n12 n_n16 n_n18 [3278] 1984 | 111- 1 1985 | 1-11 1 1986 | .names n_n1163 [564] [3278] [3279] 1987 | 1-- 1 1988 | -1- 1 1989 | --1 1 1990 | .names n_n1009 n_n19 n_n15 n_n12 [3282] 1991 | 1--- 1 1992 | -111 1 1993 | .names n_n756 n_n1104 [236] [3283] 1994 | 1-- 1 1995 | -1- 1 1996 | --1 1 1997 | .names i_7_ i_6_ n_n6 n_n11 [3285] 1998 | 0111 1 1999 | 1011 1 2000 | .names o_28_ n_n1165 [78] [3286] 2001 | 1-- 1 2002 | -1- 1 2003 | --1 1 2004 | .names n_n1169 n_n1170 n_n826 [3285] [3287] 2005 | 1--- 1 2006 | -1-- 1 2007 | --1- 1 2008 | ---1 1 2009 | .names [297] [3279] [3286] [3288] 2010 | 1-- 1 2011 | -1- 1 2012 | --1 1 2013 | .names n_n1009 n_n786 [515] [3283] [3290] 2014 | 1--- 1 2015 | -1-- 1 2016 | --1- 1 2017 | ---1 1 2018 | .names [337] [323] [3277] [3287] [3292] 2019 | 1--- 1 2020 | -1-- 1 2021 | --1- 1 2022 | ---1 1 2023 | .names i_7_ i_6_ n_n4 n_n8 [3294] 2024 | 1111 1 2025 | 0111 1 2026 | .names n_n906 n_n1329 n_n910 n_n909 [3296] 2027 | 1--- 1 2028 | -1-- 1 2029 | --1- 1 2030 | ---1 1 2031 | .names i_7_ i_6_ n_n3 n_n18 [3299] 2032 | 1111 1 2033 | 0111 1 2034 | 1011 1 2035 | 0011 1 2036 | .names i_7_ i_6_ n_n0 n_n12 [3304] 2037 | 1111 1 2038 | 0111 1 2039 | .names i_7_ i_6_ n_n0 n_n13 [3305] 2040 | 1111 1 2041 | 0111 1 2042 | 1011 1 2043 | 0011 1 2044 | .names n_n1302 n_n553 [106] [3309] 2045 | 1-- 1 2046 | -1- 1 2047 | --1 1 2048 | .names i_7_ i_6_ n_n11 n_n1 [3311] 2049 | 1111 1 2050 | 0111 1 2051 | 1011 1 2052 | .names i_7_ i_6_ n_n2 n_n10 [3312] 2053 | 1111 1 2054 | 0111 1 2055 | 1011 1 2056 | .names n_n4 n_n11 [66] n_n10 [3313] 2057 | 1--1 1 2058 | 111- 1 2059 | .names n_n4 n_n8 n_n15 n_n12 [3316] 2060 | 111- 1 2061 | 1-11 1 2062 | .names o_20_ n_n2 [69] [3317] 2063 | 1-- 1 2064 | -11 1 2065 | .names n_n1029 n_n1 [70] [3318] 2066 | 1-- 1 2067 | -11 1 2068 | .names [3313] [184] [3319] 2069 | 1- 1 2070 | -1 1 2071 | .names n_n1211 n_n1193 n_n1225 n_n1197 [3320] 2072 | 1--- 1 2073 | -1-- 1 2074 | --1- 1 2075 | ---1 1 2076 | .names o_14_ n_n1192 [534] [3316] [3321] 2077 | 1--- 1 2078 | -1-- 1 2079 | --1- 1 2080 | ---1 1 2081 | .names n_n1028 [512] [3294] [3322] 2082 | 1-- 1 2083 | -1- 1 2084 | --1 1 2085 | .names n_n935 [77] n_n1213 [3322] [3327] 2086 | 1--- 1 2087 | -1-- 1 2088 | --1- 1 2089 | ---1 1 2090 | .names [3317] [3318] [3319] [3320] [3328] 2091 | 1--- 1 2092 | -1-- 1 2093 | --1- 1 2094 | ---1 1 2095 | .names [218] [348] [3321] [3329] 2096 | 1-- 1 2097 | -1- 1 2098 | --1 1 2099 | .names [3327] [3328] [3329] [3332] 2100 | 1-- 1 2101 | -1- 1 2102 | --1 1 2103 | .names n_n137 [200] [150] [148] [3333] 2104 | 1--- 1 2105 | -1-- 1 2106 | --1- 1 2107 | ---1 1 2108 | .names [330] [326] [221] [165] [3334] 2109 | 1--- 1 2110 | -1-- 1 2111 | --1- 1 2112 | ---1 1 2113 | .names i_7_ i_6_ n_n6 n_n12 [3340] 2114 | 1111 1 2115 | 0111 1 2116 | .names n_n1135 n_n1134 n_n1136 [3341] 2117 | 1-- 1 2118 | -1- 1 2119 | --1 1 2120 | .names n_n973 [468] [3340] [3342] 2121 | 1-- 1 2122 | -1- 1 2123 | --1 1 2124 | .names [461] [3341] [3342] [3344] 2125 | 1-- 1 2126 | -1- 1 2127 | --1 1 2128 | .names n_n904 [308] [462] [3345] 2129 | 1-- 1 2130 | -1- 1 2131 | --1 1 2132 | .names n_n1147 n_n1153 [160] [456] [3348] 2133 | 1--- 1 2134 | -1-- 1 2135 | --1- 1 2136 | ---1 1 2137 | .names i_7_ i_6_ n_n5 n_n12 [3349] 2138 | 1111 1 2139 | 0111 1 2140 | 1011 1 2141 | .names n_n1154 n_n1169 n_n1170 [3350] 2142 | 1-- 1 2143 | -1- 1 2144 | --1 1 2145 | .names o_28_ [286] [78] n_n1166 [3351] 2146 | 1--- 1 2147 | -1-- 1 2148 | --1- 1 2149 | ---1 1 2150 | .names [222] [3348] [3351] [3353] 2151 | 1-- 1 2152 | -1- 1 2153 | --1 1 2154 | .names n_n427 n_n609 [3350] [3353] [3355] 2155 | 1--- 1 2156 | -1-- 1 2157 | --1- 1 2158 | ---1 1 2159 | .names i_7_ i_6_ n_n3 n_n12 [3358] 2160 | 1011 1 2161 | 0011 1 2162 | .names [135] n_n805 [3359] 2163 | 1- 1 2164 | -1 1 2165 | .names [189] [218] [3360] 2166 | 1- 1 2167 | -1 1 2168 | .names n_n2 n_n1244 [70] [3361] 2169 | -1- 1 2170 | 1-1 1 2171 | .names i_7_ i_6_ n_n13 n_n2 [3363] 2172 | 0111 1 2173 | 1011 1 2174 | 0011 1 2175 | .names [88] n_n2 n_n10 [67] [3366] 2176 | 1--- 1 2177 | -111 1 2178 | .names n_n1194 n_n1261 n_n1010 n_n1320 [3367] 2179 | 1--- 1 2180 | -1-- 1 2181 | --1- 1 2182 | ---1 1 2183 | .names [147] n_n616 [274] [242] [3368] 2184 | 1--- 1 2185 | -1-- 1 2186 | --1- 1 2187 | ---1 1 2188 | .names n_n1321 [265] [3216] [3366] [3369] 2189 | 1--- 1 2190 | -1-- 1 2191 | --1- 1 2192 | ---1 1 2193 | .names n_n602 n_n1022 n_n1298 [3218] [3370] 2194 | 1--- 1 2195 | -1-- 1 2196 | --1- 1 2197 | ---1 1 2198 | .names n_n1334 [83] [85] [128] [3373] 2199 | 1--- 1 2200 | -1-- 1 2201 | --1- 1 2202 | ---1 1 2203 | .names [114] [298] [3367] [3368] [3375] 2204 | 1--- 1 2205 | -1-- 1 2206 | --1- 1 2207 | ---1 1 2208 | .names [3369] [3370] [3373] [3377] 2209 | 1-- 1 2210 | -1- 1 2211 | --1 1 2212 | .names [218] [189] [238] [3375] [3378] 2213 | 1--- 1 2214 | -1-- 1 2215 | --1- 1 2216 | ---1 1 2217 | .names n_n573 [318] [319] [3379] 2218 | 1-- 1 2219 | -1- 1 2220 | --1 1 2221 | .names [3344] [3345] [3355] [3379] [3381] 2222 | 1--- 1 2223 | -1-- 1 2224 | --1- 1 2225 | ---1 1 2226 | .names n_n13 n_n2 n_n1257 [64] [3383] 2227 | --1- 1 2228 | 11-1 1 2229 | .names i_7_ i_6_ n_n1 n_n18 [3384] 2230 | 1111 1 2231 | 0111 1 2232 | 1011 1 2233 | .names [146] n_n3 [72] [3387] 2234 | 1-- 1 2235 | -11 1 2236 | .names n_n1238 [268] n_n1239 [434] [3388] 2237 | 1--- 1 2238 | -1-- 1 2239 | --1- 1 2240 | ---1 1 2241 | .names i_7_ i_6_ n_n1 n_n8 [3390] 2242 | 0111 1 2243 | 0011 1 2244 | .names [249] [183] [207] [426] [3393] 2245 | 1--- 1 2246 | -1-- 1 2247 | --1- 1 2248 | ---1 1 2249 | .names i_7_ i_6_ n_n0 n_n13 [3395] 2250 | 0111 1 2251 | 1011 1 2252 | 0011 1 2253 | .names i_7_ i_6_ n_n11 n_n19 [3400] 2254 | 1111 1 2255 | 1011 1 2256 | 0011 1 2257 | .names n_n921 n_n1 [71] [3195] [3404] 2258 | 1--- 1 2259 | -11- 1 2260 | -1-1 1 2261 | .names o_21_ n_n1168 n_n1196 n_n953 [3405] 2262 | 1--- 1 2263 | -1-- 1 2264 | --1- 1 2265 | ---1 1 2266 | .names n_n1287 n_n1163 n_n1318 n_n1189 [3406] 2267 | 1--- 1 2268 | -1-- 1 2269 | --1- 1 2270 | ---1 1 2271 | .names n_n756 n_n1135 n_n1203 [273] [3407] 2272 | 1--- 1 2273 | -1-- 1 2274 | --1- 1 2275 | ---1 1 2276 | .names n_n1049 n_n1227 [3358] [3408] 2277 | 1-- 1 2278 | -1- 1 2279 | --1 1 2280 | .names [93] [186] [3400] [3410] 2281 | 1-- 1 2282 | -1- 1 2283 | --1 1 2284 | .names n_n1009 n_n864 n_n1061 n_n1083 [3411] 2285 | 1--- 1 2286 | -1-- 1 2287 | --1- 1 2288 | ---1 1 2289 | .names [3407] [3406] [3413] 2290 | 1- 1 2291 | -1 1 2292 | .names [297] [309] [3408] [3414] 2293 | 1-- 1 2294 | -1- 1 2295 | --1 1 2296 | .names n_n845 [129] [107] [128] [3417] 2297 | 1--- 1 2298 | -1-- 1 2299 | --1- 1 2300 | ---1 1 2301 | .names [337] n_n1015 n_n1320 [3216] [3418] 2302 | 1--- 1 2303 | -1-- 1 2304 | --1- 1 2305 | ---1 1 2306 | .names [345] [3383] [3410] [3411] [3420] 2307 | 1--- 1 2308 | -1-- 1 2309 | --1- 1 2310 | ---1 1 2311 | .names [324] [343] [3404] [3405] [3422] 2312 | 1--- 1 2313 | -1-- 1 2314 | --1- 1 2315 | ---1 1 2316 | .names n_n573 n_n574 [3413] [3414] [3424] 2317 | 1--- 1 2318 | -1-- 1 2319 | --1- 1 2320 | ---1 1 2321 | .names [3420] [333] [3425] 2322 | 1- 1 2323 | -1 1 2324 | .names [285] [341] [3422] [3425] [3428] 2325 | 1--- 1 2326 | -1-- 1 2327 | --1- 1 2328 | ---1 1 2329 | .names [129] [107] n_n582 [3430] 2330 | 1-- 1 2331 | -1- 1 2332 | --1 1 2333 | .names [228] n_n1231 [135] [3432] 2334 | 1-- 1 2335 | -1- 1 2336 | --1 1 2337 | .names n_n1169 n_n1147 n_n1170 [549] [3433] 2338 | 1--- 1 2339 | -1-- 1 2340 | --1- 1 2341 | ---1 1 2342 | .names [354] [92] [222] [160] [3434] 2343 | 1--- 1 2344 | -1-- 1 2345 | --1- 1 2346 | ---1 1 2347 | .names [93] [466] [3433] [3435] 2348 | 1-- 1 2349 | -1- 1 2350 | --1 1 2351 | .names [187] [99] [191] [3434] [3436] 2352 | 1--- 1 2353 | -1-- 1 2354 | --1- 1 2355 | ---1 1 2356 | .names [88] n_n5 [72] [3437] 2357 | 1-- 1 2358 | -11 1 2359 | .names n_n1203 [194] [273] [3210] [3439] 2360 | 1--- 1 2361 | -1-- 1 2362 | --1- 1 2363 | ---1 1 2364 | .names [320] n_n955 [3437] [3440] 2365 | 1-- 1 2366 | -1- 1 2367 | --1 1 2368 | .names n_n0 [155] n_n11 n_n16 [3441] 2369 | -1-- 1 2370 | 1-11 1 2371 | .names n_n1135 n_n1134 n_n1137 [3442] 2372 | 1-- 1 2373 | -1- 1 2374 | --1 1 2375 | .names n_n973 [468] [3340] [3443] 2376 | 1-- 1 2377 | -1- 1 2378 | --1 1 2379 | .names [155] n_n1319 n_n911 [3443] [3446] 2380 | 1--- 1 2381 | -1-- 1 2382 | --1- 1 2383 | ---1 1 2384 | .names n_n936 [261] [295] [3442] [3447] 2385 | 1--- 1 2386 | -1-- 1 2387 | --1- 1 2388 | ---1 1 2389 | .names n_n904 n_n906 n_n1329 [128] [3448] 2390 | 1--- 1 2391 | -1-- 1 2392 | --1- 1 2393 | ---1 1 2394 | .names n_n996 [87] [3446] [3448] [3452] 2395 | 1--- 1 2396 | -1-- 1 2397 | --1- 1 2398 | ---1 1 2399 | .names [343] [201] [3430] [3432] [3453] 2400 | 1--- 1 2401 | -1-- 1 2402 | --1- 1 2403 | ---1 1 2404 | .names [3435] [3436] [3439] [3440] [3454] 2405 | 1--- 1 2406 | -1-- 1 2407 | --1- 1 2408 | ---1 1 2409 | .names [330] n_n427 [200] [3447] [3455] 2410 | 1--- 1 2411 | -1-- 1 2412 | --1- 1 2413 | ---1 1 2414 | .names o_13_ n_n1254 n_n1253 [3458] 2415 | 1-- 1 2416 | -1- 1 2417 | --1 1 2418 | .names [292] n_n1230 n_n1040 [3458] [3460] 2419 | 1--- 1 2420 | -1-- 1 2421 | --1- 1 2422 | ---1 1 2423 | .names [248] n_n0 [82] [71] [3462] 2424 | 1--- 1 2425 | -11- 1 2426 | -1-1 1 2427 | .names n_n744 [153] [155] [3464] 2428 | 1-- 1 2429 | -1- 1 2430 | --1 1 2431 | .names i_7_ i_6_ n_n3 n_n18 [3465] 2432 | 1111 1 2433 | 0111 1 2434 | 1011 1 2435 | .names o_15_ n_n1223 [414] [3467] 2436 | 1-- 1 2437 | -1- 1 2438 | --1 1 2439 | .names i_7_ i_6_ n_n4 n_n10 [3470] 2440 | 1111 1 2441 | 0111 1 2442 | 1011 1 2443 | 0011 1 2444 | .names o_21_ n_n1255 n_n1256 n_n1229 [3471] 2445 | 1--- 1 2446 | -1-- 1 2447 | --1- 1 2448 | ---1 1 2449 | .names n_n1029 n_n1 [70] [3470] [3472] 2450 | 1--- 1 2451 | ---1 1 2452 | -11- 1 2453 | .names n_n1197 [88] n_n845 n_n955 [3474] 2454 | 1--- 1 2455 | -1-- 1 2456 | --1- 1 2457 | ---1 1 2458 | .names n_n602 n_n1022 n_n1023 [3472] [3475] 2459 | 1--- 1 2460 | -1-- 1 2461 | --1- 1 2462 | ---1 1 2463 | .names [298] [84] [216] [3471] [3477] 2464 | 1--- 1 2465 | -1-- 1 2466 | --1- 1 2467 | ---1 1 2468 | .names [189] [310] [3477] [3480] 2469 | 1-- 1 2470 | -1- 1 2471 | --1 1 2472 | .names [221] [165] [181] [3460] [3481] 2473 | 1--- 1 2474 | -1-- 1 2475 | --1- 1 2476 | ---1 1 2477 | .names [177] [182] [3474] [3475] [3482] 2478 | 1--- 1 2479 | -1-- 1 2480 | --1- 1 2481 | ---1 1 2482 | .names o_20_ n_n4 n_n8 n_n15 [3485] 2483 | 1--- 1 2484 | -111 1 2485 | .names n_n1211 [279] [512] [3294] [3486] 2486 | 1--- 1 2487 | -1-- 1 2488 | --1- 1 2489 | ---1 1 2490 | .names n_n7 n_n13 n_n2 n_n14 [3487] 2491 | -1-- 1 2492 | 1-11 1 2493 | .names i_7_ i_6_ n_n2 n_n12 [3488] 2494 | 1011 1 2495 | 0011 1 2496 | .names n_n1229 n_n1056 [3488] [3491] 2497 | 1-- 1 2498 | -1- 1 2499 | --1 1 2500 | .names [155] [3304] [3305] [3487] [3492] 2501 | 1--- 1 2502 | -1-- 1 2503 | --1- 1 2504 | ---1 1 2505 | .names [153] n_n1283 n_n580 [260] [3493] 2506 | 1--- 1 2507 | -1-- 1 2508 | --1- 1 2509 | ---1 1 2510 | .names [164] n_n955 [3225] [3491] [3494] 2511 | 1--- 1 2512 | -1-- 1 2513 | --1- 1 2514 | ---1 1 2515 | .names n_n845 [128] [3485] [3486] [3495] 2516 | 1--- 1 2517 | -1-- 1 2518 | --1- 1 2519 | ---1 1 2520 | .names [87] n_n1032 [216] [3309] [3496] 2521 | 1--- 1 2522 | -1-- 1 2523 | --1- 1 2524 | ---1 1 2525 | .names n_n996 [150] [148] n_n1257 [3497] 2526 | 1--- 1 2527 | -1-- 1 2528 | --1- 1 2529 | ---1 1 2530 | .names [3493] [3492] [3498] 2531 | 1- 1 2532 | -1 1 2533 | .names [181] [3460] [3494] [3495] [3502] 2534 | 1--- 1 2535 | -1-- 1 2536 | --1- 1 2537 | ---1 1 2538 | .names [318] [3496] [3497] [3498] [3503] 2539 | 1--- 1 2540 | -1-- 1 2541 | --1- 1 2542 | ---1 1 2543 | .names n_n4 n_n2 n_n17 n_n8 [3505] 2544 | 1-11 1 2545 | -111 1 2546 | .names n_n805 n_n3 [71] [3506] 2547 | 1-- 1 2548 | -11 1 2549 | .names [104] [412] [413] [3507] 2550 | 1-- 1 2551 | -1- 1 2552 | --1 1 2553 | .names o_20_ [135] [3505] [3510] 2554 | 1-- 1 2555 | -1- 1 2556 | --1 1 2557 | .names n_n1028 n_n2 n_n930 [72] [3511] 2558 | 1--- 1 2559 | --1- 1 2560 | -1-1 1 2561 | .names [159] [162] [288] [293] [3515] 2562 | 1--- 1 2563 | -1-- 1 2564 | --1- 1 2565 | ---1 1 2566 | .names [331] n_n797 [3363] [3516] 2567 | 1-- 1 2568 | -1- 1 2569 | --1 1 2570 | .names [95] [3467] [3510] [3517] 2571 | 1-- 1 2572 | -1- 1 2573 | --1 1 2574 | .names n_n950 [77] n_n1213 [3511] [3518] 2575 | 1--- 1 2576 | -1-- 1 2577 | --1- 1 2578 | ---1 1 2579 | .names n_n803 [164] [3506] [3507] [3519] 2580 | 1--- 1 2581 | -1-- 1 2582 | --1- 1 2583 | ---1 1 2584 | .names n_n602 n_n1022 n_n1023 [3515] [3520] 2585 | 1--- 1 2586 | -1-- 1 2587 | --1- 1 2588 | ---1 1 2589 | .names [310] [216] [3304] [3305] [3521] 2590 | 1--- 1 2591 | -1-- 1 2592 | --1- 1 2593 | ---1 1 2594 | .names [178] [270] n_n823 [3521] [3526] 2595 | 1--- 1 2596 | -1-- 1 2597 | --1- 1 2598 | ---1 1 2599 | .names [3516] [3517] [3518] [3519] [3527] 2600 | 1--- 1 2601 | -1-- 1 2602 | --1- 1 2603 | ---1 1 2604 | .names [301] n_n137 [3520] [3528] 2605 | 1-- 1 2606 | -1- 1 2607 | --1 1 2608 | .names n_n3 [77] [72] [3533] 2609 | -1- 1 2610 | 1-1 1 2611 | .names i_7_ i_6_ n_n4 n_n12 [3535] 2612 | 0111 1 2613 | 1011 1 2614 | 0011 1 2615 | .names [94] n_n1 [71] [3541] 2616 | 1-- 1 2617 | -11 1 2618 | .names o_6_ n_n5 n_n921 [72] [3542] 2619 | 1--- 1 2620 | --1- 1 2621 | -1-1 1 2622 | .names n_n1274 n_n1121 n_n1180 n_n1321 [3545] 2623 | 1--- 1 2624 | -1-- 1 2625 | --1- 1 2626 | ---1 1 2627 | .names n_n814 n_n1122 n_n1288 n_n1204 [3546] 2628 | 1--- 1 2629 | -1-- 1 2630 | --1- 1 2631 | ---1 1 2632 | .names n_n1287 n_n822 n_n1285 [243] [3548] 2633 | 1--- 1 2634 | -1-- 1 2635 | --1- 1 2636 | ---1 1 2637 | .names [76] [130] [274] [291] [3552] 2638 | 1--- 1 2639 | -1-- 1 2640 | --1- 1 2641 | ---1 1 2642 | .names [86] [95] [3467] [3554] 2643 | 1-- 1 2644 | -1- 1 2645 | --1 1 2646 | .names n_n1049 n_n1010 n_n1320 [3548] [3556] 2647 | 1--- 1 2648 | -1-- 1 2649 | --1- 1 2650 | ---1 1 2651 | .names [111] [136] [253] [276] [3557] 2652 | 1--- 1 2653 | -1-- 1 2654 | --1- 1 2655 | ---1 1 2656 | .names [3541] [3542] [3552] [3558] 2657 | 1-- 1 2658 | -1- 1 2659 | --1 1 2660 | .names [87] [215] n_n1032 [3533] [3560] 2661 | 1--- 1 2662 | -1-- 1 2663 | --1- 1 2664 | ---1 1 2665 | .names [345] [229] n_n642 [3561] 2666 | 1-- 1 2667 | -1- 1 2668 | --1 1 2669 | .names [196] [3545] [3546] [3560] [3566] 2670 | 1--- 1 2671 | -1-- 1 2672 | --1- 1 2673 | ---1 1 2674 | .names [154] [305] [3554] [3561] [3567] 2675 | 1--- 1 2676 | -1-- 1 2677 | --1- 1 2678 | ---1 1 2679 | .names [3435] [3436] [3556] [3557] [3568] 2680 | 1--- 1 2681 | -1-- 1 2682 | --1- 1 2683 | ---1 1 2684 | .names [341] n_n427 n_n1006 [3558] [3569] 2685 | 1--- 1 2686 | -1-- 1 2687 | --1- 1 2688 | ---1 1 2689 | .names i_7_ i_6_ n_n4 n_n12 [3573] 2690 | 1111 1 2691 | 0111 1 2692 | 1011 1 2693 | .names n_n19 n_n10 [64] [163] [3577] 2694 | 1--1 1 2695 | 111- 1 2696 | .names n_n19 n_n8 n_n14 [133] [3579] 2697 | ---1 1 2698 | 111- 1 2699 | .names n_n953 n_n4 n_n13 n_n17 [3581] 2700 | 1--- 1 2701 | ---0 1 2702 | -111 1 2703 | .names n_n961 n_n962 [468] [3340] [3582] 2704 | 1--- 1 2705 | -1-- 1 2706 | --1- 1 2707 | ---1 1 2708 | .names n_n5 n_n128 n_n859 [72] [3585] 2709 | -1-- 1 2710 | --1- 1 2711 | 1--1 1 2712 | .names n_n1083 [156] [236] [3577] [3586] 2713 | 1--- 1 2714 | -1-- 1 2715 | --1- 1 2716 | ---1 1 2717 | .names n_n1121 [133] [140] [3582] [3587] 2718 | 1--- 1 2719 | -1-- 1 2720 | --1- 1 2721 | ---1 1 2722 | .names [276] [83] [85] [3581] [3588] 2723 | 1--- 1 2724 | -1-- 1 2725 | --1- 1 2726 | ---1 1 2727 | .names n_n602 n_n215 n_n1022 n_n1023 [3589] 2728 | 1--- 1 2729 | -1-- 1 2730 | --1- 1 2731 | ---1 1 2732 | .names [215] [3485] [3486] [3533] [3590] 2733 | 1--- 1 2734 | -1-- 1 2735 | --1- 1 2736 | ---1 1 2737 | .names [348] n_n1002 [95] [3467] [3592] 2738 | 1--- 1 2739 | -1-- 1 2740 | --1- 1 2741 | ---1 1 2742 | .names [345] [229] n_n642 [3592] [3598] 2743 | 1--- 1 2744 | -1-- 1 2745 | --1- 1 2746 | ---1 1 2747 | .names [221] [165] [3585] [3586] [3599] 2748 | 1--- 1 2749 | -1-- 1 2750 | --1- 1 2751 | ---1 1 2752 | .names [193] [255] [313] [3587] [3600] 2753 | 1--- 1 2754 | -1-- 1 2755 | --1- 1 2756 | ---1 1 2757 | .names [332] [3588] [3589] [3590] [3601] 2758 | 1--- 1 2759 | -1-- 1 2760 | --1- 1 2761 | ---1 1 2762 | .names [180] [273] [3604] 2763 | 1- 1 2764 | -1 1 2765 | .names n_n1197 [88] n_n955 [3604] [3605] 2766 | 1--- 1 2767 | -1-- 1 2768 | --1- 1 2769 | ---1 1 2770 | .names n_n2 [295] [290] [69] [3607] 2771 | -1-- 1 2772 | --1- 1 2773 | 1--1 1 2774 | .names n_n1010 [208] [3609] 2775 | 1- 1 2776 | -1 1 2777 | .names n_n1283 n_n1334 n_n580 [3610] 2778 | 1-- 1 2779 | -1- 1 2780 | --1 1 2781 | .names [331] n_n931 [3609] [3610] [3612] 2782 | 1--- 1 2783 | -1-- 1 2784 | --1- 1 2785 | ---1 1 2786 | .names n_n95 n_n858 [3462] [3464] [3613] 2787 | 1--- 1 2788 | -1-- 1 2789 | --1- 1 2790 | ---1 1 2791 | .names [200] [150] [148] [3612] [3614] 2792 | 1--- 1 2793 | -1-- 1 2794 | --1- 1 2795 | ---1 1 2796 | .names [343] [211] [3432] [3607] [3615] 2797 | 1--- 1 2798 | -1-- 1 2799 | --1- 1 2800 | ---1 1 2801 | .names [318] [3605] [3613] [3616] 2802 | 1-- 1 2803 | -1- 1 2804 | --1 1 2805 | .names [3344] [3345] [3355] [3616] [3618] 2806 | 1--- 1 2807 | -1-- 1 2808 | --1- 1 2809 | ---1 1 2810 | .names n_n0 n_n17 n_n12 n_n18 [3619] 2811 | 1--1 1 2812 | 111- 1 2813 | .names n_n11 n_n1 [71] n_n16 [3621] 2814 | -11- 1 2815 | 11-1 1 2816 | .names n_n17 n_n1010 [279] n_n9 [3623] 2817 | -1-- 1 2818 | --1- 1 2819 | 1--1 1 2820 | .names [153] n_n950 n_n1208 [551] [3624] 2821 | 1--- 1 2822 | -1-- 1 2823 | --1- 1 2824 | ---1 1 2825 | .names o_18_ [130] [237] [3624] [3628] 2826 | 1--- 1 2827 | -1-- 1 2828 | --1- 1 2829 | ---1 1 2830 | .names [218] [238] [3623] [3630] 2831 | 1-- 1 2832 | -1- 1 2833 | --1 1 2834 | .names [179] [139] [3393] [3628] [3631] 2835 | 1--- 1 2836 | -1-- 1 2837 | --1- 1 2838 | ---1 1 2839 | .names n_n573 [319] n_n990 n_n574 [3632] 2840 | 1--- 1 2841 | -1-- 1 2842 | --1- 1 2843 | ---1 1 2844 | .names n_n883 [3355] [3630] [3631] [3635] 2845 | 1--- 1 2846 | -1-- 1 2847 | --1- 1 2848 | ---1 1 2849 | .names i_7_ i_6_ n_n4 n_n9 [3636] 2850 | 1111 1 2851 | 0111 1 2852 | 1011 1 2853 | 0011 1 2854 | .names i_7_ i_6_ n_n3 n_n18 [3638] 2855 | 1111 1 2856 | 0111 1 2857 | 1011 1 2858 | 0011 1 2859 | .names n_n13 n_n3 [64] [3638] [3639] 2860 | ---1 1 2861 | 111- 1 2862 | .names [197] [154] [3641] 2863 | 1- 1 2864 | -1 1 2865 | .names [146] n_n1 [67] n_n18 [3643] 2866 | 1--- 1 2867 | -111 1 2868 | .names n_n0 [183] [69] [3644] 2869 | -1- 1 2870 | 1-1 1 2871 | .names [300] [247] [3645] 2872 | 1- 1 2873 | -1 1 2874 | .names [226] n_n1300 n_n1258 [257] [3652] 2875 | 1--- 1 2876 | -1-- 1 2877 | --1- 1 2878 | ---1 1 2879 | .names n_n1018 n_n1022 [3643] [3644] [3653] 2880 | 1--- 1 2881 | -1-- 1 2882 | --1- 1 2883 | ---1 1 2884 | .names n_n215 [250] n_n923 [3621] [3654] 2885 | 1--- 1 2886 | -1-- 1 2887 | --1- 1 2888 | ---1 1 2889 | .names [228] [230] n_n387 [3645] [3655] 2890 | 1--- 1 2891 | -1-- 1 2892 | --1- 1 2893 | ---1 1 2894 | .names [254] n_n1275 [132] [3654] [3658] 2895 | 1--- 1 2896 | -1-- 1 2897 | --1- 1 2898 | ---1 1 2899 | .names [83] [229] [3652] [3655] [3659] 2900 | 1--- 1 2901 | -1-- 1 2902 | --1- 1 2903 | ---1 1 2904 | .names [177] [332] [3641] [3653] [3660] 2905 | 1--- 1 2906 | -1-- 1 2907 | --1- 1 2908 | ---1 1 2909 | .names n_n883 [3355] [3658] [3659] [3663] 2910 | 1--- 1 2911 | -1-- 1 2912 | --1- 1 2913 | ---1 1 2914 | .names n_n1122 n_n1165 [78] [3667] 2915 | 1-- 1 2916 | -1- 1 2917 | --1 1 2918 | .names n_n1137 n_n962 [468] [3340] [3668] 2919 | 1--- 1 2920 | -1-- 1 2921 | --1- 1 2922 | ---1 1 2923 | .names n_n864 [158] [316] [3669] 2924 | 1-- 1 2925 | -1- 1 2926 | --1 1 2927 | .names [297] n_n963 n_n859 [3279] [3671] 2928 | 1--- 1 2929 | -1-- 1 2930 | --1- 1 2931 | ---1 1 2932 | .names [93] [140] [466] [3274] [3672] 2933 | 1--- 1 2934 | -1-- 1 2935 | --1- 1 2936 | ---1 1 2937 | .names n_n128 [3282] [3283] [3667] [3674] 2938 | 1--- 1 2939 | -1-- 1 2940 | --1- 1 2941 | ---1 1 2942 | .names [152] n_n673 [3668] [3669] [3676] 2943 | 1--- 1 2944 | -1-- 1 2945 | --1- 1 2946 | ---1 1 2947 | .names n_n4 n_n2 n_n15 n_n12 [3679] 2948 | 1-11 1 2949 | -111 1 2950 | .names n_n10 n_n1 [71] [64] [3682] 2951 | -11- 1 2952 | 11-1 1 2953 | .names n_n1300 n_n1238 n_n1239 n_n1315 [3686] 2954 | 1--- 1 2955 | -1-- 1 2956 | --1- 1 2957 | ---1 1 2958 | .names o_9_ [259] n_n1301 [3687] 2959 | 1-- 1 2960 | -1- 1 2961 | --1 1 2962 | .names o_13_ o_7_ n_n1253 n_n1268 [3688] 2963 | 1--- 1 2964 | -1-- 1 2965 | --1- 1 2966 | ---1 1 2967 | .names o_6_ n_n1225 [3679] [3689] 2968 | 1-- 1 2969 | -1- 1 2970 | --1 1 2971 | .names n_n1334 n_n1254 n_n1330 n_n1316 [3690] 2972 | 1--- 1 2973 | -1-- 1 2974 | --1- 1 2975 | ---1 1 2976 | .names n_n1028 [77] n_n1213 [3691] 2977 | 1-- 1 2978 | -1- 1 2979 | --1 1 2980 | .names n_n1197 [88] n_n822 [3692] 2981 | 1-- 1 2982 | -1- 1 2983 | --1 1 2984 | .names [183] n_n813 [207] [3693] 2985 | 1-- 1 2986 | -1- 1 2987 | --1 1 2988 | .names n_n1010 n_n961 [109] [112] [3695] 2989 | 1--- 1 2990 | -1-- 1 2991 | --1- 1 2992 | ---1 1 2993 | .names [159] [162] [3682] [3693] [3702] 2994 | 1--- 1 2995 | -1-- 1 2996 | --1- 1 2997 | ---1 1 2998 | .names [3686] [3687] [3695] [3703] 2999 | 1-- 1 3000 | -1- 1 3001 | --1 1 3002 | .names [218] [3688] [3689] [3704] 3003 | 1-- 1 3004 | -1- 1 3005 | --1 1 3006 | .names [305] n_n387 n_n642 [3690] [3705] 3007 | 1--- 1 3008 | -1-- 1 3009 | --1- 1 3010 | ---1 1 3011 | .names n_n574 [254] [3691] [3692] [3706] 3012 | 1--- 1 3013 | -1-- 1 3014 | --1- 1 3015 | ---1 1 3016 | .names [314] [3702] [3703] [3704] [3710] 3017 | 1--- 1 3018 | -1-- 1 3019 | --1- 1 3020 | ---1 1 3021 | .names i_7_ i_6_ n_n7 n_n19 [3712] 3022 | 0111 1 3023 | 1011 1 3024 | 0011 1 3025 | .names n_n1135 n_n1137 [3712] [3713] 3026 | 1-- 1 3027 | -1- 1 3028 | --1 1 3029 | .names i_7_ i_6_ n_n7 n_n2 [3714] 3030 | 1111 1 3031 | 0111 1 3032 | .names [269] [3714] [3715] 3033 | 1- 1 3034 | -1 1 3035 | .names o_18_ [130] n_n1033 [3716] 3036 | 1-- 1 3037 | -1- 1 3038 | --1 1 3039 | .names [250] n_n923 [3621] [3715] [3717] 3040 | 1--- 1 3041 | -1-- 1 3042 | --1- 1 3043 | ---1 1 3044 | .names o_30_ o_7_ [127] [3719] 3045 | 1-- 1 3046 | -1- 1 3047 | --1 1 3048 | .names n_n1121 [257] [133] [140] [3722] 3049 | 1--- 1 3050 | -1-- 1 3051 | --1- 1 3052 | ---1 1 3053 | .names n_n1049 [99] [235] [77] [3723] 3054 | 1--- 1 3055 | -1-- 1 3056 | --1- 1 3057 | ---1 1 3058 | .names [189] [270] n_n823 [3724] 3059 | 1-- 1 3060 | -1- 1 3061 | --1 1 3062 | .names n_n673 n_n1076 n_n1136 [3713] [3725] 3063 | 1--- 1 3064 | -1-- 1 3065 | --1- 1 3066 | ---1 1 3067 | .names [197] [325] [3725] [3730] 3068 | 1-- 1 3069 | -1- 1 3070 | --1 1 3071 | .names [284] n_n660 [3719] [3722] [3731] 3072 | 1--- 1 3073 | -1-- 1 3074 | --1- 1 3075 | ---1 1 3076 | .names [315] [3716] [3717] [3732] 3077 | 1-- 1 3078 | -1- 1 3079 | --1 1 3080 | .names [255] n_n563 [3723] [3724] [3733] 3081 | 1--- 1 3082 | -1-- 1 3083 | --1- 1 3084 | ---1 1 3085 | .names n_n906 n_n1017 [3736] 3086 | 1- 1 3087 | -1 1 3088 | .names [196] n_n1022 [223] n_n1023 [3739] 3089 | 1--- 1 3090 | -1-- 1 3091 | --1- 1 3092 | ---1 1 3093 | .names [333] [177] [154] [197] [3743] 3094 | 1--- 1 3095 | -1-- 1 3096 | --1- 1 3097 | ---1 1 3098 | .names [86] [193] [267] [3736] [3744] 3099 | 1--- 1 3100 | -1-- 1 3101 | --1- 1 3102 | ---1 1 3103 | .names [314] [141] [165] [3739] [3745] 3104 | 1--- 1 3105 | -1-- 1 3106 | --1- 1 3107 | ---1 1 3108 | .names [108] [337] [3435] [3436] [3749] 3109 | 1--- 1 3110 | -1-- 1 3111 | --1- 1 3112 | ---1 1 3113 | .names n_n1022 n_n1023 n_n1024 n_n1025 [3750] 3114 | 1--- 1 3115 | -1-- 1 3116 | --1- 1 3117 | ---1 1 3118 | .names [298] n_n1021 n_n1020 [303] [3751] 3119 | 1--- 1 3120 | -1-- 1 3121 | --1- 1 3122 | ---1 1 3123 | .names n_n1029 n_n1017 n_n1 [70] [3754] 3124 | 1--- 1 3125 | -1-- 1 3126 | --11 1 3127 | .names n_n845 [209] [292] [3756] 3128 | 1-- 1 3129 | -1- 1 3130 | --1 1 3131 | .names n_n1215 n_n744 n_n745 [3754] [3758] 3132 | 1--- 1 3133 | -1-- 1 3134 | --1- 1 3135 | ---1 1 3136 | .names n_n895 n_n858 [3462] [3759] 3137 | 1-- 1 3138 | -1- 1 3139 | --1 1 3140 | .names [85] [283] [3756] [3760] 3141 | 1-- 1 3142 | -1- 1 3143 | --1 1 3144 | .names [3439] [3440] [3760] [3763] 3145 | 1-- 1 3146 | -1- 1 3147 | --1 1 3148 | .names [267] [3750] [3751] [3764] 3149 | 1-- 1 3150 | -1- 1 3151 | --1 1 3152 | .names [165] [181] [3758] [3759] [3765] 3153 | 1--- 1 3154 | -1-- 1 3155 | --1- 1 3156 | ---1 1 3157 | .names [285] [284] [3749] [3765] [3767] 3158 | 1--- 1 3159 | -1-- 1 3160 | --1- 1 3161 | ---1 1 3162 | .names i_7_ i_6_ n_n2 n_n8 [3770] 3163 | 0111 1 3164 | 1011 1 3165 | .names o_7_ n_n554 n_n1268 [3772] 3166 | 1-- 1 3167 | -1- 1 3168 | --1 1 3169 | .names n_n1271 n_n1189 n_n1 [72] [3774] 3170 | 1--- 1 3171 | -1-- 1 3172 | --11 1 3173 | .names n_n1216 n_n1244 [3770] [3775] 3174 | 1-- 1 3175 | -1- 1 3176 | --1 1 3177 | .names [186] n_n1061 [209] n_n1223 [3777] 3178 | 1--- 1 3179 | -1-- 1 3180 | --1- 1 3181 | ---1 1 3182 | .names n_n1245 [287] [308] [277] [3781] 3183 | 1--- 1 3184 | -1-- 1 3185 | --1- 1 3186 | ---1 1 3187 | .names n_n810 n_n809 [3772] [3777] [3782] 3188 | 1--- 1 3189 | -1-- 1 3190 | --1- 1 3191 | ---1 1 3192 | .names n_n904 [129] [107] [3784] 3193 | 1-- 1 3194 | -1- 1 3195 | --1 1 3196 | .names [112] [150] n_n802 [3781] [3786] 3197 | 1--- 1 3198 | -1-- 1 3199 | --1- 1 3200 | ---1 1 3201 | .names [324] [3774] [3775] [3784] [3789] 3202 | 1--- 1 3203 | -1-- 1 3204 | --1- 1 3205 | ---1 1 3206 | .names [342] [3341] [3342] [3786] [3790] 3207 | 1--- 1 3208 | -1-- 1 3209 | --1- 1 3210 | ---1 1 3211 | .names n_n427 [340] [3782] [3792] 3212 | 1-- 1 3213 | -1- 1 3214 | --1 1 3215 | .names [200] [238] [3789] [3792] [3795] 3216 | 1--- 1 3217 | -1-- 1 3218 | --1- 1 3219 | ---1 1 3220 | .names i_7_ i_6_ n_n5 n_n8 [3796] 3221 | 1111 1 3222 | 0111 1 3223 | 1011 1 3224 | 0011 1 3225 | .names n_n5 n_n14 [72] [3796] [3797] 3226 | ---1 1 3227 | 111- 1 3228 | .names n_n4 n_n13 n_n17 [271] [3798] 3229 | ---1 1 3230 | 111- 1 3231 | .names n_n5 n_n10 n_n15 n_n12 [3800] 3232 | 111- 1 3233 | 1-11 1 3234 | .names o_28_ [78] n_n1166 [3800] [3801] 3235 | 1--- 1 3236 | -1-- 1 3237 | --1- 1 3238 | ---1 1 3239 | .names i_7_ i_6_ n_n7 n_n3 [3802] 3240 | 0111 1 3241 | 1011 1 3242 | 0011 1 3243 | .names o_21_ n_n953 n_n1203 n_n1056 [3804] 3244 | 1--- 1 3245 | -1-- 1 3246 | --1- 1 3247 | ---1 1 3248 | .names n_n3 n_n1 n_n12 n_n16 [3806] 3249 | 1-11 1 3250 | -111 1 3251 | .names i_7_ i_6_ n_n2 n_n11 [3807] 3252 | 1011 1 3253 | 0011 1 3254 | .names n_n13 n_n3 n_n15 n_n9 [3808] 3255 | 111- 1 3256 | -111 1 3257 | .names n_n1135 n_n3 n_n1137 [71] [3809] 3258 | 1--- 1 3259 | --1- 1 3260 | -1-1 1 3261 | .names [127] [247] [3810] 3262 | 1- 1 3263 | -1 1 3264 | .names n_n3 n_n1076 [69] [3465] [3813] 3265 | -1-- 1 3266 | ---1 1 3267 | 1-1- 1 3268 | .names [260] [3806] [3807] [3808] [3816] 3269 | 1--- 1 3270 | -1-- 1 3271 | --1- 1 3272 | ---1 1 3273 | .names [297] n_n1147 [532] [3279] [3818] 3274 | 1--- 1 3275 | -1-- 1 3276 | --1- 1 3277 | ---1 1 3278 | .names [107] [217] [3809] [3810] [3820] 3279 | 1--- 1 3280 | -1-- 1 3281 | --1- 1 3282 | ---1 1 3283 | .names [250] n_n923 [3621] [3816] [3821] 3284 | 1--- 1 3285 | -1-- 1 3286 | --1- 1 3287 | ---1 1 3288 | .names [156] [270] [3797] [3798] [3822] 3289 | 1--- 1 3290 | -1-- 1 3291 | --1- 1 3292 | ---1 1 3293 | .names [283] n_n859 [3359] [3801] [3823] 3294 | 1--- 1 3295 | -1-- 1 3296 | --1- 1 3297 | ---1 1 3298 | .names [196] [323] [3277] [3296] [3827] 3299 | 1--- 1 3300 | -1-- 1 3301 | --1- 1 3302 | ---1 1 3303 | .names [327] n_n711 [231] [3823] [3829] 3304 | 1--- 1 3305 | -1-- 1 3306 | --1- 1 3307 | ---1 1 3308 | .names n_n660 [295] [3813] [3818] [3830] 3309 | 1--- 1 3310 | -1-- 1 3311 | --1- 1 3312 | ---1 1 3313 | .names n_n427 [347] [3820] [3831] 3314 | 1-- 1 3315 | -1- 1 3316 | --1 1 3317 | .names [3821] [3822] [3827] [3832] 3318 | 1-- 1 3319 | -1- 1 3320 | --1 1 3321 | .names [158] n_n825 [134] [78] [3841] 3322 | 1--- 1 3323 | -1-- 1 3324 | --1- 1 3325 | ---1 1 3326 | .names o_8_ [346] [133] [140] [3842] 3327 | 1--- 1 3328 | -1-- 1 3329 | --1- 1 3330 | ---1 1 3331 | .names [187] [235] [308] [316] [3843] 3332 | 1--- 1 3333 | -1-- 1 3334 | --1- 1 3335 | ---1 1 3336 | .names [94] n_n872 [191] [3841] [3844] 3337 | 1--- 1 3338 | -1-- 1 3339 | --1- 1 3340 | ---1 1 3341 | .names [152] n_n673 [302] [3842] [3847] 3342 | 1--- 1 3343 | -1-- 1 3344 | --1- 1 3345 | ---1 1 3346 | .names n_n0 n_n1243 [71] [3850] 3347 | -1- 1 3348 | 1-1 1 3349 | .names [109] [293] [3853] 3350 | 1- 1 3351 | -1 1 3352 | .names o_9_ n_n1300 n_n1301 n_n1315 [3854] 3353 | 1--- 1 3354 | -1-- 1 3355 | --1- 1 3356 | ---1 1 3357 | .names [271] [259] [3855] 3358 | 1- 1 3359 | -1 1 3360 | .names n_n1287 n_n814 n_n1316 [101] [3856] 3361 | 1--- 1 3362 | -1-- 1 3363 | --1- 1 3364 | ---1 1 3365 | .names o_20_ [159] [135] [219] [3857] 3366 | 1--- 1 3367 | -1-- 1 3368 | --1- 1 3369 | ---1 1 3370 | .names [183] n_n813 [207] [3860] 3371 | 1-- 1 3372 | -1- 1 3373 | --1 1 3374 | .names n_n744 [184] n_n805 [104] [3864] 3375 | 1--- 1 3376 | -1-- 1 3377 | --1- 1 3378 | ---1 1 3379 | .names [287] [305] [3868] 3380 | 1- 1 3381 | -1 1 3382 | .names n_n803 n_n3 [97] [71] [3870] 3383 | 1--- 1 3384 | --1- 1 3385 | -1-1 1 3386 | .names n_n935 [77] n_n1213 [3857] [3871] 3387 | 1--- 1 3388 | -1-- 1 3389 | --1- 1 3390 | ---1 1 3391 | .names n_n1197 [88] [253] [3860] [3872] 3392 | 1--- 1 3393 | -1-- 1 3394 | --1- 1 3395 | ---1 1 3396 | .names [107] n_n581 n_n742 n_n1034 [3873] 3397 | 1--- 1 3398 | -1-- 1 3399 | --1- 1 3400 | ---1 1 3401 | .names n_n824 [3850] [3864] [3874] 3402 | 1-- 1 3403 | -1- 1 3404 | --1 1 3405 | .names [3853] [3854] [3855] [3856] [3875] 3406 | 1--- 1 3407 | -1-- 1 3408 | --1- 1 3409 | ---1 1 3410 | .names n_n845 [95] [320] [3467] [3876] 3411 | 1--- 1 3412 | -1-- 1 3413 | --1- 1 3414 | ---1 1 3415 | .names [250] n_n711 [3621] [3868] [3877] 3416 | 1--- 1 3417 | -1-- 1 3418 | --1- 1 3419 | ---1 1 3420 | .names [3870] [3871] [3877] [3882] 3421 | 1-- 1 3422 | -1- 1 3423 | --1 1 3424 | .names [3872] [3873] [3874] [3875] [3883] 3425 | 1--- 1 3426 | -1-- 1 3427 | --1- 1 3428 | ---1 1 3429 | .names [3843] [3844] [3847] [3883] [3885] 3430 | 1--- 1 3431 | -1-- 1 3432 | --1- 1 3433 | ---1 1 3434 | .names n_n1009 n_n19 n_n8 n_n15 [3886] 3435 | 1--- 1 3436 | -111 1 3437 | .names [93] n_n1155 [160] [3890] 3438 | 1-- 1 3439 | -1- 1 3440 | --1 1 3441 | .names [222] [297] [3279] [3890] [3892] 3442 | 1--- 1 3443 | -1-- 1 3444 | --1- 1 3445 | ---1 1 3446 | .names n_n1169 n_n1314 n_n1165 n_n821 [3897] 3447 | 1--- 1 3448 | -1-- 1 3449 | --1- 1 3450 | ---1 1 3451 | .names n_n1180 [271] n_n817 [3899] 3452 | 1-- 1 3453 | -1- 1 3454 | --1 1 3455 | .names [162] [291] n_n961 [500] [3900] 3456 | 1--- 1 3457 | -1-- 1 3458 | --1- 1 3459 | ---1 1 3460 | .names [99] n_n1322 [207] [3899] [3903] 3461 | 1--- 1 3462 | -1-- 1 3463 | --1- 1 3464 | ---1 1 3465 | .names [114] n_n814 [97] [3897] [3905] 3466 | 1--- 1 3467 | -1-- 1 3468 | --1- 1 3469 | ---1 1 3470 | .names [129] [107] n_n989 [3900] [3908] 3471 | 1--- 1 3472 | -1-- 1 3473 | --1- 1 3474 | ---1 1 3475 | .names [154] [139] [3903] [3905] [3909] 3476 | 1--- 1 3477 | -1-- 1 3478 | --1- 1 3479 | ---1 1 3480 | .names n_n573 [238] n_n574 [3360] [3910] 3481 | 1--- 1 3482 | -1-- 1 3483 | --1- 1 3484 | ---1 1 3485 | .names [319] n_n1006 n_n563 [3892] [3911] 3486 | 1--- 1 3487 | -1-- 1 3488 | --1- 1 3489 | ---1 1 3490 | .names o_10_ n_n3 n_n12 n_n16 [3915] 3491 | 1--- 1 3492 | -111 1 3493 | .names o_27_ n_n1215 [277] [3916] 3494 | 1-- 1 3495 | -1- 1 3496 | --1 1 3497 | .names [261] [217] [3915] [3916] [3920] 3498 | 1--- 1 3499 | -1-- 1 3500 | --1- 1 3501 | ---1 1 3502 | .names n_n459 [129] [107] [3921] 3503 | 1-- 1 3504 | -1- 1 3505 | --1 1 3506 | .names n_n895 [283] n_n911 [3441] [3922] 3507 | 1--- 1 3508 | -1-- 1 3509 | --1- 1 3510 | ---1 1 3511 | .names [200] [201] [3439] [3440] [3925] 3512 | 1--- 1 3513 | -1-- 1 3514 | --1- 1 3515 | ---1 1 3516 | .names n_n573 [340] [3920] [3926] 3517 | 1-- 1 3518 | -1- 1 3519 | --1 1 3520 | .names [285] [284] [3749] [3926] [3928] 3521 | 1--- 1 3522 | -1-- 1 3523 | --1- 1 3524 | ---1 1 3525 | .names n_n17 n_n10 n_n1 n_n12 [3929] 3526 | -11- 1 3527 | 1--1 1 3528 | .names n_n1135 n_n1134 n_n1137 n_n1136 [3935] 3529 | 1--- 1 3530 | -1-- 1 3531 | --1- 1 3532 | ---1 1 3533 | .names [104] n_n1083 [3936] 3534 | 1- 1 3535 | -1 1 3536 | .names n_n926 n_n1238 n_n1239 [3937] 3537 | 1-- 1 3538 | -1- 1 3539 | --1 1 3540 | .names [113] n_n930 [3938] 3541 | 1- 1 3542 | -1 1 3543 | .names [161] [158] [3939] 3544 | 1- 1 3545 | -1 1 3546 | .names o_9_ o_8_ n_n1302 n_n872 [3940] 3547 | 1--- 1 3548 | -1-- 1 3549 | --1- 1 3550 | ---1 1 3551 | .names n_n953 n_n1288 n_n1322 n_n1139 [3941] 3552 | 1--- 1 3553 | -1-- 1 3554 | --1- 1 3555 | ---1 1 3556 | .names n_n1203 n_n1138 [273] [3929] [3942] 3557 | 1--- 1 3558 | -1-- 1 3559 | --1- 1 3560 | ---1 1 3561 | .names [354] n_n1226 [77] [160] [3944] 3562 | 1--- 1 3563 | -1-- 1 3564 | --1- 1 3565 | ---1 1 3566 | .names n_n1021 n_n553 [3945] 3567 | 1- 1 3568 | -1 1 3569 | .names [346] [3941] [3950] 3570 | 1- 1 3571 | -1 1 3572 | .names n_n963 [76] n_n1017 n_n859 [3951] 3573 | 1--- 1 3574 | -1-- 1 3575 | --1- 1 3576 | ---1 1 3577 | .names o_18_ [130] [156] [3952] 3578 | 1-- 1 3579 | -1- 1 3580 | --1 1 3581 | .names n_n923 [217] [3942] [3955] 3582 | 1-- 1 3583 | -1- 1 3584 | --1 1 3585 | .names [148] [198] [3935] [3936] [3957] 3586 | 1--- 1 3587 | -1-- 1 3588 | --1- 1 3589 | ---1 1 3590 | .names [3937] [3938] [3939] [3940] [3958] 3591 | 1--- 1 3592 | -1-- 1 3593 | --1- 1 3594 | ---1 1 3595 | .names n_n387 n_n711 [295] [194] [3962] 3596 | 1--- 1 3597 | -1-- 1 3598 | --1- 1 3599 | ---1 1 3600 | .names n_n534 n_n895 [173] [3222] [3965] 3601 | 1--- 1 3602 | -1-- 1 3603 | --1- 1 3604 | ---1 1 3605 | .names [252] [331] n_n563 n_n931 [3966] 3606 | 1--- 1 3607 | -1-- 1 3608 | --1- 1 3609 | ---1 1 3610 | .names [342] [3950] [3951] [3952] [3967] 3611 | 1--- 1 3612 | -1-- 1 3613 | --1- 1 3614 | ---1 1 3615 | .names [3944] [3945] [3955] [3962] [3968] 3616 | 1--- 1 3617 | -1-- 1 3618 | --1- 1 3619 | ---1 1 3620 | .names [3957] [3958] [3965] [3969] 3621 | 1-- 1 3622 | -1- 1 3623 | --1 1 3624 | .names n_n1268 n_n1272 [132] [3973] 3625 | 1-- 1 3626 | -1- 1 3627 | --1 1 3628 | .names [112] [209] n_n802 n_n1223 [3975] 3629 | 1--- 1 3630 | -1-- 1 3631 | --1- 1 3632 | ---1 1 3633 | .names n_n1245 n_n1244 [277] [3975] [3976] 3634 | 1--- 1 3635 | -1-- 1 3636 | --1- 1 3637 | ---1 1 3638 | .names [177] [238] [3641] [3976] [3978] 3639 | 1--- 1 3640 | -1-- 1 3641 | --1- 1 3642 | ---1 1 3643 | .names o_9_ n_n1302 n_n553 [3982] 3644 | 1-- 1 3645 | -1- 1 3646 | --1 1 3647 | .names n_n1010 n_n1021 [265] [3983] 3648 | 1-- 1 3649 | -1- 1 3650 | --1 1 3651 | .names [76] n_n1017 [3982] [3983] [3985] 3652 | 1--- 1 3653 | -1-- 1 3654 | --1- 1 3655 | ---1 1 3656 | .names [150] [148] [3430] [3985] [3986] 3657 | 1--- 1 3658 | -1-- 1 3659 | --1- 1 3660 | ---1 1 3661 | .names n_n0 [183] [69] [3993] 3662 | -1- 1 3663 | 1-1 1 3664 | .names n_n1300 [266] n_n1315 [3994] 3665 | 1-- 1 3666 | -1- 1 3667 | --1 1 3668 | .names o_7_ n_n1147 n_n1238 n_n1155 [3995] 3669 | 1--- 1 3670 | -1-- 1 3671 | --1- 1 3672 | ---1 1 3673 | .names n_n1009 n_n1256 [127] [471] [3997] 3674 | 1--- 1 3675 | -1-- 1 3676 | --1- 1 3677 | ---1 1 3678 | .names [147] [184] [545] [546] [3998] 3679 | 1--- 1 3680 | -1-- 1 3681 | --1- 1 3682 | ---1 1 3683 | .names n_n1049 n_n1021 [77] n_n1020 [4001] 3684 | 1--- 1 3685 | -1-- 1 3686 | --1- 1 3687 | ---1 1 3688 | .names n_n1083 n_n468 [236] [473] [4003] 3689 | 1--- 1 3690 | -1-- 1 3691 | --1- 1 3692 | ---1 1 3693 | .names n_n1022 n_n1253 n_n1231 [3997] [4004] 3694 | 1--- 1 3695 | -1-- 1 3696 | --1- 1 3697 | ---1 1 3698 | .names [3993] [3994] [3998] [4005] 3699 | 1-- 1 3700 | -1- 1 3701 | --1 1 3702 | .names [229] n_n642 [270] [3797] [4006] 3703 | 1--- 1 3704 | -1-- 1 3705 | --1- 1 3706 | ---1 1 3707 | .names [156] n_n859 [3798] [3801] [4007] 3708 | 1--- 1 3709 | -1-- 1 3710 | --1- 1 3711 | ---1 1 3712 | .names [323] [140] [3579] [3995] [4008] 3713 | 1--- 1 3714 | -1-- 1 3715 | --1- 1 3716 | ---1 1 3717 | .names [297] n_n738 [3279] [4001] [4009] 3718 | 1--- 1 3719 | -1-- 1 3720 | --1- 1 3721 | ---1 1 3722 | .names [4009] [4008] [4013] 3723 | 1- 1 3724 | -1 1 3725 | .names [3716] [3717] [4003] [4004] [4014] 3726 | 1--- 1 3727 | -1-- 1 3728 | --1- 1 3729 | ---1 1 3730 | .names [347] [321] [4015] 3731 | 1- 1 3732 | -1 1 3733 | .names n_n1006 [4005] [4006] [4007] [4016] 3734 | 1--- 1 3735 | -1-- 1 3736 | --1- 1 3737 | ---1 1 3738 | .names n_n1017 n_n1024 n_n1025 [4019] 3739 | 1-- 1 3740 | -1- 1 3741 | --1 1 3742 | .names n_n1022 n_n1298 [3218] [4019] [4020] 3743 | 1--- 1 3744 | -1-- 1 3745 | --1- 1 3746 | ---1 1 3747 | .names n_n744 n_n906 n_n745 [268] [4023] 3748 | 1--- 1 3749 | -1-- 1 3750 | --1- 1 3751 | ---1 1 3752 | .names [325] n_n858 [3462] [4024] 3753 | 1-- 1 3754 | -1- 1 3755 | --1 1 3756 | .names [298] [110] [303] [4023] [4025] 3757 | 1--- 1 3758 | -1-- 1 3759 | --1- 1 3760 | ---1 1 3761 | .names [177] [154] [197] [4024] [4027] 3762 | 1--- 1 3763 | -1-- 1 3764 | --1- 1 3765 | ---1 1 3766 | .names [115] [165] [4020] [4025] [4029] 3767 | 1--- 1 3768 | -1-- 1 3769 | --1- 1 3770 | ---1 1 3771 | .names [267] [322] [4027] [4029] [4031] 3772 | 1--- 1 3773 | -1-- 1 3774 | --1- 1 3775 | ---1 1 3776 | .names o_30_ n_n1261 n_n756 n_n1268 [4037] 3777 | 1--- 1 3778 | -1-- 1 3779 | --1- 1 3780 | ---1 1 3781 | .names n_n949 [162] [243] [4038] 3782 | 1-- 1 3783 | -1- 1 3784 | --1 1 3785 | .names n_n950 [159] [219] [4039] 3786 | 1-- 1 3787 | -1- 1 3788 | --1 1 3789 | .names n_n616 n_n617 n_n1083 [127] [4042] 3790 | 1--- 1 3791 | -1-- 1 3792 | --1- 1 3793 | ---1 1 3794 | .names [104] [257] n_n1226 [77] [4044] 3795 | 1--- 1 3796 | -1-- 1 3797 | --1- 1 3798 | ---1 1 3799 | .names [99] [235] n_n948 [173] [4046] 3800 | 1--- 1 3801 | -1-- 1 3802 | --1- 1 3803 | ---1 1 3804 | .names [161] [135] [4037] [4042] [4047] 3805 | 1--- 1 3806 | -1-- 1 3807 | --1- 1 3808 | ---1 1 3809 | .names n_n1121 [325] [140] [3274] [4050] 3810 | 1--- 1 3811 | -1-- 1 3812 | --1- 1 3813 | ---1 1 3814 | .names [4038] [4039] [4044] [4051] 3815 | 1-- 1 3816 | -1- 1 3817 | --1 1 3818 | .names [301] [197] [270] n_n823 [4053] 3819 | 1--- 1 3820 | -1-- 1 3821 | --1- 1 3822 | ---1 1 3823 | .names n_n673 [225] [3713] [4050] [4055] 3824 | 1--- 1 3825 | -1-- 1 3826 | --1- 1 3827 | ---1 1 3828 | .names [4046] [4047] [4051] [4056] 3829 | 1-- 1 3830 | -1- 1 3831 | --1 1 3832 | .names n_n845 [332] [315] n_n858 [4057] 3833 | 1--- 1 3834 | -1-- 1 3835 | --1- 1 3836 | ---1 1 3837 | .names [115] [192] [255] [4053] [4058] 3838 | 1--- 1 3839 | -1-- 1 3840 | --1- 1 3841 | ---1 1 3842 | .names n_n1321 [147] [265] [281] [4063] 3843 | 1--- 1 3844 | -1-- 1 3845 | --1- 1 3846 | ---1 1 3847 | .names [110] n_n1010 n_n1320 [4063] [4065] 3848 | 1--- 1 3849 | -1-- 1 3850 | --1- 1 3851 | ---1 1 3852 | .names [76] n_n1017 [85] [231] [4066] 3853 | 1--- 1 3854 | -1-- 1 3855 | --1- 1 3856 | ---1 1 3857 | .names [3750] [3751] [4066] [4068] 3858 | 1-- 1 3859 | -1- 1 3860 | --1 1 3861 | .names n_n990 [233] n_n1014 [4065] [4069] 3862 | 1--- 1 3863 | -1-- 1 3864 | --1- 1 3865 | ---1 1 3866 | .names n_n7 n_n6 n_n10 n_n14 [4071] 3867 | --1- 1 3868 | 11-1 1 3869 | .names [88] n_n5 [72] [4074] 3870 | 1-- 1 3871 | -11 1 3872 | .names n_n1163 n_n1282 [4071] [4076] 3873 | 1-- 1 3874 | -1- 1 3875 | --1 1 3876 | .names [208] n_n1167 [269] [4079] 3877 | 1-- 1 3878 | -1- 1 3879 | --1 1 3880 | .names n_n1203 [273] [3210] [4076] [4081] 3881 | 1--- 1 3882 | -1-- 1 3883 | --1- 1 3884 | ---1 1 3885 | .names [306] [237] [4082] 3886 | 1- 1 3887 | -1 1 3888 | .names [309] [111] n_n960 n_n955 [4083] 3889 | 1--- 1 3890 | -1-- 1 3891 | --1- 1 3892 | ---1 1 3893 | .names [130] n_n925 [4074] [4079] [4084] 3894 | 1--- 1 3895 | -1-- 1 3896 | --1- 1 3897 | ---1 1 3898 | .names [320] [139] [3393] [4086] 3899 | 1-- 1 3900 | -1- 1 3901 | --1 1 3902 | .names n_n95 n_n1334 [128] [3296] [4090] 3903 | 1--- 1 3904 | -1-- 1 3905 | --1- 1 3906 | ---1 1 3907 | .names [331] [179] n_n931 [4086] [4091] 3908 | 1--- 1 3909 | -1-- 1 3910 | --1- 1 3911 | ---1 1 3912 | .names n_n901 [4081] [4082] [4083] [4092] 3913 | 1--- 1 3914 | -1-- 1 3915 | --1- 1 3916 | ---1 1 3917 | .names [343] [211] [3432] [3607] [4093] 3918 | 1--- 1 3919 | -1-- 1 3920 | --1- 1 3921 | ---1 1 3922 | .names n_n427 [4084] [4090] [4094] 3923 | 1-- 1 3924 | -1- 1 3925 | --1 1 3926 | .names [4091] [4092] [4094] [4097] 3927 | 1-- 1 3928 | -1- 1 3929 | --1 1 3930 | .names [76] n_n1010 n_n1320 [4098] 3931 | 1-- 1 3932 | -1- 1 3933 | --1 1 3934 | .names n_n1321 [95] [265] [3467] [4099] 3935 | 1--- 1 3936 | -1-- 1 3937 | --1- 1 3938 | ---1 1 3939 | .names n_n1049 [77] [4098] [4100] 3940 | 1-- 1 3941 | -1- 1 3942 | --1 1 3943 | .names [156] [270] [3797] [3798] [4101] 3944 | 1--- 1 3945 | -1-- 1 3946 | --1- 1 3947 | ---1 1 3948 | .names [83] [85] [4020] [4101] [4105] 3949 | 1--- 1 3950 | -1-- 1 3951 | --1- 1 3952 | ---1 1 3953 | .names [333] n_n859 [3801] [4099] [4106] 3954 | 1--- 1 3955 | -1-- 1 3956 | --1- 1 3957 | ---1 1 3958 | .names [108] [337] [264] [3892] [4108] 3959 | 1--- 1 3960 | -1-- 1 3961 | --1- 1 3962 | ---1 1 3963 | .names [193] [165] n_n989 [4100] [4109] 3964 | 1--- 1 3965 | -1-- 1 3966 | --1- 1 3967 | ---1 1 3968 | .names [4105] [4106] [4109] [4112] 3969 | 1-- 1 3970 | -1- 1 3971 | --1 1 3972 | .names n_n0 n_n17 n_n1 n_n8 [4113] 3973 | 1--- 1 3974 | -111 1 3975 | .names [162] n_n582 [4113] [4115] 3976 | 1-- 1 3977 | -1- 1 3978 | --1 1 3979 | .names [129] [107] [139] [4115] [4117] 3980 | 1--- 1 3981 | -1-- 1 3982 | --1- 1 3983 | ---1 1 3984 | .names n_n4 n_n2 n_n12 n_n16 [4119] 3985 | 1-11 1 3986 | -111 1 3987 | .names n_n0 n_n3 n_n8 n_n16 [4122] 3988 | 1-11 1 3989 | -111 1 3990 | .names n_n5 n_n19 n_n12 n_n16 [4123] 3991 | 1-11 1 3992 | -111 1 3993 | .names n_n5 n_n4 n_n8 n_n16 [4125] 3994 | 1-11 1 3995 | -111 1 3996 | .names n_n1300 n_n1315 [4119] [4126] 3997 | 1-- 1 3998 | -1- 1 3999 | --1 1 4000 | .names n_n1269 n_n1224 n_n1284 n_n1148 [4127] 4001 | 1--- 1 4002 | -1-- 1 4003 | --1- 1 4004 | ---1 1 4005 | .names [4123] [4122] [4128] 4006 | 1- 1 4007 | -1 1 4008 | .names n_n1119 n_n1133 [4125] [4129] 4009 | 1-- 1 4010 | -1- 1 4011 | --1 1 4012 | .names n_n1135 n_n826 n_n1137 [4138] 4013 | 1-- 1 4014 | -1- 1 4015 | --1 1 4016 | .names n_n10 n_n1 n_n1024 [67] [4139] 4017 | --1- 1 4018 | 11-1 1 4019 | .names o_11_ n_n1302 n_n1163 n_n1256 [4140] 4020 | 1--- 1 4021 | -1-- 1 4022 | --1- 1 4023 | ---1 1 4024 | .names n_n1258 n_n1138 n_n1167 n_n1303 [4141] 4025 | 1--- 1 4026 | -1-- 1 4027 | --1- 1 4028 | ---1 1 4029 | .names n_n1170 n_n1273 n_n1301 n_n1077 [4142] 4030 | 1--- 1 4031 | -1-- 1 4032 | --1- 1 4033 | ---1 1 4034 | .names n_n1076 n_n910 n_n909 [4144] 4035 | 1-- 1 4036 | -1- 1 4037 | --1 1 4038 | .names n_n1274 [281] n_n1298 [3218] [4145] 4039 | 1--- 1 4040 | -1-- 1 4041 | --1- 1 4042 | ---1 1 4043 | .names n_n911 n_n797 [3363] [3441] [4149] 4044 | 1--- 1 4045 | -1-- 1 4046 | --1- 1 4047 | ---1 1 4048 | .names [226] [309] [4144] [4150] 4049 | 1-- 1 4050 | -1- 1 4051 | --1 1 4052 | .names [147] [300] [4138] [4145] [4151] 4053 | 1--- 1 4054 | -1-- 1 4055 | --1- 1 4056 | ---1 1 4057 | .names [4139] [4140] [4141] [4142] [4152] 4058 | 1--- 1 4059 | -1-- 1 4060 | --1- 1 4061 | ---1 1 4062 | .names n_n459 [216] [3304] [3305] [4153] 4063 | 1--- 1 4064 | -1-- 1 4065 | --1- 1 4066 | ---1 1 4067 | .names n_n800 [195] [231] [3361] [4154] 4068 | 1--- 1 4069 | -1-- 1 4070 | --1- 1 4071 | ---1 1 4072 | .names [323] n_n786 [4154] [4160] 4073 | 1-- 1 4074 | -1- 1 4075 | --1 1 4076 | .names [4149] [4150] [4151] [4152] [4161] 4077 | 1--- 1 4078 | -1-- 1 4079 | --1- 1 4080 | ---1 1 4081 | .names [218] [189] [238] [315] [4162] 4082 | 1--- 1 4083 | -1-- 1 4084 | --1- 1 4085 | ---1 1 4086 | .names [326] [193] n_n989 [4153] [4163] 4087 | 1--- 1 4088 | -1-- 1 4089 | --1- 1 4090 | ---1 1 4091 | .names n_n4 n_n11 n_n1 n_n16 [4166] 4092 | 11-1 1 4093 | -111 1 4094 | .names n_n5 n_n2 n_n11 n_n16 [4167] 4095 | 1-11 1 4096 | -111 1 4097 | .names n_n6 n_n11 n_n3 n_n16 [4168] 4098 | 11-1 1 4099 | -111 1 4100 | .names n_n0 n_n11 n_n19 n_n16 [4169] 4101 | 11-1 1 4102 | -111 1 4103 | .end 4104 | -------------------------------------------------------------------------------- /test/eblif/test.eblif: -------------------------------------------------------------------------------- 1 | .model top 2 | .inputs a b clk 3 | .outputs o_dff 4 | 5 | .names 1\a 3 a_-1234567890~|:*/\[\]\.\{\}^+$;'?<> 6 | 7 | .names a b \ 8 | a_and_b 9 | 11 1 10 | .cname lut_a_and_b 11 | 12 | .subckt dff \ 13 | d=a_and_b \ 14 | q=dff_q \ 15 | clk=clk 16 | .cname my_dff 17 | .param parama param_valuea 18 | .param attra attr_valuea 19 | .param paramb " A B " 20 | .attr attrb "I have a space" 21 | 22 | .conn dff_q o_dff 23 | 24 | .end 25 | 26 | 27 | .model dff 28 | .inputs d clk 29 | .outputs q 30 | .blackbox 31 | .end 32 | -------------------------------------------------------------------------------- /test/eblif/test_blank_param_attr.eblif: -------------------------------------------------------------------------------- 1 | .model top 2 | .inputs a b clk 3 | .outputs o_dff 4 | 5 | .names a b a_and_b 6 | 11 1 7 | .cname lut_a_and_b 8 | 9 | .subckt dff \ 10 | d=a_and_b \ 11 | q=dff_q \ 12 | clk=clk 13 | .cname my_dff 14 | .param parama #Blank value 15 | .attr attra #Blank value 16 | 17 | .conn dff_q o_dff 18 | 19 | .end 20 | 21 | 22 | .model dff 23 | .inputs d clk 24 | .outputs q 25 | .blackbox 26 | .end 27 | -------------------------------------------------------------------------------- /test/eblif/yosys.cmd: -------------------------------------------------------------------------------- 1 | read_verilog /project/trees/vtr/vtr_flow/benchmarks/verilog/sha.v 2 | #setattr -set "myattr" "myattrvalue" * 3 | #setparam -set "myparam" "myparamvalue" * 4 | #hierarchy 5 | #proc; opt; techmap; opt; 6 | proc; 7 | write_blif -conn -attr -param -cname sha.blif 8 | -------------------------------------------------------------------------------- /test/test_parser.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ ! -x ./blifparse_test ]]; then 4 | echo "Failed to find test executable" >&2 5 | exit 2 6 | fi 7 | 8 | for path in "$@" 9 | do 10 | blif_files=`find $path -name '*.blif' -o -name '*.eblif'` 11 | for blif_file in ${blif_files[@]} 12 | do 13 | echo 14 | echo "File: $blif_file" 15 | #valgrind --leak-check=full --track-origins=yes ./blifparse_test $blif_file 16 | ./blifparse_test $blif_file > blif_parse_test.log 17 | exit_code=$? 18 | if [[ $exit_code -ne 0 ]]; then 19 | echo "Error" >&2 20 | exit 1 21 | fi 22 | done 23 | 24 | done 25 | echo "PASSED TEST" >&2 26 | exit 0 27 | --------------------------------------------------------------------------------